diff --git a/Project.toml b/Project.toml index de20677..b2325f1 100644 --- a/Project.toml +++ b/Project.toml @@ -7,7 +7,7 @@ Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" Vulkan_Headers_jll = "8d446b21-f3ad-5576-a034-752265b9b6f9" [compat] -Vulkan_Headers_jll = "1.3.240" +Vulkan_Headers_jll = "1.4.321" julia = "1.3" [extras] diff --git a/gen/Manifest.toml b/gen/Manifest.toml index 775ee3d..c5a3666 100644 --- a/gen/Manifest.toml +++ b/gen/Manifest.toml @@ -1,69 +1,79 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.11.0-DEV" +julia_version = "1.12.6" manifest_format = "2.0" -project_hash = "7bdc85188ce7eaad35edd65b0d6cae8d20eb84d7" +project_hash = "679819695f7c11284c58b12247355094ed512796" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" [[deps.CEnum]] -git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" +git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.2" +version = "0.5.0" [[deps.Clang]] -deps = ["CEnum", "Clang_jll", "Downloads", "Pkg", "TOML"] -git-tree-sha1 = "d78c2973d7a752be377fe173bc9ff2dc2d9c3ed6" +deps = ["CEnum", "Clang_unified_jll", "Downloads", "Pkg", "TOML"] +git-tree-sha1 = "abf4d804064811b1948978a4aee478ccc76d6c9d" uuid = "40e3b903-d033-50b4-a0cc-940c62c95e31" -version = "0.17.6" +version = "0.19.3" + +[[deps.Clang_unified_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "TOML", "Zlib_jll", "Zstd_jll", "libLLVM_jll"] +git-tree-sha1 = "05e53efbcd4efa450a3bf343b62793436b2cc5d1" +uuid = "ffc816e1-ba66-5fa9-9ecc-bcc5cb19bea1" +version = "0.1.5+1" -[[deps.Clang_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "TOML", "Zlib_jll", "libLLVM_jll"] -git-tree-sha1 = "1b72866ec1a54e7e4593f7a137c892bb365570f4" -uuid = "0ee61d77-7f21-5576-8119-9fcc46b10100" -version = "15.0.7+8" +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.3.0+1" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" +version = "1.7.0" [[deps.EpollShim_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" +git-tree-sha1 = "8a4be429317c42cfae6a7fc03c31bad1970c310d" uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" +version = "0.0.20230411+1" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +git-tree-sha1 = "e6c4a6407a949e79a9d3f249bf49e6987c80e01f" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.5.0+0" +version = "2.8.2+0" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +git-tree-sha1 = "7204148362dafe5fe6a273f855b8ccbe4df8173e" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" +version = "1.8.0" + +[[deps.JuliaSyntaxHighlighting]] +deps = ["StyledStrings"] +uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011" +version = "1.12.0" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] @@ -71,103 +81,91 @@ uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" version = "0.6.4" [[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.0.1+1" +version = "8.15.0+0" [[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +deps = ["LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" [[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.7.1+0" +version = "1.9.0+0" [[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +deps = ["Artifacts", "Libdl", "OpenSSL_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" +version = "1.11.3+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] -git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.7+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.42.0+0" - -[[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" +git-tree-sha1 = "c8da7e6a91781c41a863611c7e966098d783c57a" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.4.7+0" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" [[deps.Markdown]] -deps = ["Base64"] +deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "1.11.0" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2025.11.4" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" +version = "1.3.0" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.5.4+0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.11.0" +version = "1.12.1" + + [deps.Pkg.extensions] + REPLExt = "REPL" + + [deps.Pkg.weakdeps] + REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +git-tree-sha1 = "8b770b60760d4451834fe79dd483e318eee709c4" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.1" +version = "1.5.2" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" [[deps.TOML]] deps = ["Dates"] @@ -182,110 +180,100 @@ version = "1.10.0" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.Vulkan_Headers_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bc6c02948bfaac887e155670338804d38f6c9717" +git-tree-sha1 = "a2bfa46393bce7f450ee949273f2ba310d889693" uuid = "8d446b21-f3ad-5576-a034-752265b9b6f9" -version = "1.3.240+0" +version = "1.4.321+0" [[deps.Wayland_jll]] -deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "96478df35bbc2f3e1e791bc7a3d0eeee559e60e9" uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "24b81b59bd35b3c42ab84fa589086e19be919916" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.11.5+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" +version = "1.24.0+0" [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" +git-tree-sha1 = "808090ede1d41644447dd5cbafced4731c56bd2f" uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" +version = "1.8.13+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "aa1261ebbac3ccc8d16558ae6799524c450ed16b" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.13+0" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "52858d64353db33a56e13c341d7bf44cd0d7b309" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.6+0" [[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "1a4a26870bf1e5d26cd585e38038d399d7e65706" uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.4+4" +version = "1.3.8+0" [[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "6c174ef70c96c76f4c3f4d3cfbe09d018bcd1b53" uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" +version = "1.5.6+0" [[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "7ed9347888fac59a618302ee38216dd0379c480d" uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.10+4" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.9.12+0" [[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] +git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422" uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" +version = "1.17.1+0" [[deps.Xorg_xorgproto_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "9a9eb8ce756fe0bca01b4be16da770e18d264972" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "5e45869edce497f36a803fc01c2676b7f5dc3610" uuid = "c4d99508-4286-5418-9131-c86396af500b" -version = "2019.2.0+2" +version = "2024.1.1+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.6.0+0" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" +version = "1.3.1+2" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.7+1" [[deps.libLLVM_jll]] deps = ["Artifacts", "Libdl"] uuid = "8f36deef-c2a5-5394-99ed-8e07531fb29a" -version = "15.0.7+8" +version = "18.1.7+5" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" +version = "1.64.0+1" [[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" +version = "17.7.0+0" diff --git a/gen/Project.toml b/gen/Project.toml index 3448b37..ab9b624 100644 --- a/gen/Project.toml +++ b/gen/Project.toml @@ -10,5 +10,5 @@ Xorg_libxcb_jll = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" Xorg_xorgproto_jll = "c4d99508-4286-5418-9131-c86396af500b" [compat] -Clang = "0.17" -Vulkan_Headers_jll = "1.3.240" +Clang = "0.17, 0.18, 0.19, 0.20" +Vulkan_Headers_jll = "1.4.321" diff --git a/gen/generator.jl b/gen/generator.jl index 43c698f..ebf6294 100755 --- a/gen/generator.jl +++ b/gen/generator.jl @@ -47,6 +47,20 @@ VK_EXTENSIONS_MAP = Dict( "x86_64-unknown-freebsd" => ["-DVK_USE_PLATFORM_XCB_KHR", "-DVK_USE_PLATFORM_XLIB_KHR", "-DVK_USE_PLATFORM_XLIB_XRANDR_EXT"], ) +# JLLEnvs gained version-suffixed triples (e.g. "x86_64-unknown-freebsd13.2", +# "x86_64-apple-darwin14"), so an exact lookup in VK_EXTENSIONS_MAP misses. Compare +# with the trailing version stripped from both sides. +strip_triple_version(t) = replace(t, r"[0-9.]+$" => "") + +function extension_flags(target) + haskey(VK_EXTENSIONS_MAP, target) && return VK_EXTENSIONS_MAP[target] + nt = strip_triple_version(target) + for (k, v) in VK_EXTENSIONS_MAP + strip_triple_version(k) == nt && return v + end + error("no Vulkan platform flags configured for target $target") +end + for target in JLLEnvs.JLL_ENV_TRIPLES @info "processing $target" @@ -94,7 +108,7 @@ for target in JLLEnvs.JLL_ENV_TRIPLES 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]) + append!(args, extension_flags(target)) # add header directory to detect `vk_video` headers push!(args, "-I$VK_INCLUDE_BASE") diff --git a/lib/aarch64-apple-darwin20.jl b/lib/aarch64-apple-darwin20.jl index 4676c88..e3a122f 100644 --- a/lib/aarch64-apple-darwin20.jl +++ b/lib/aarch64-apple-darwin20.jl @@ -133,6 +133,7 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -147,21 +148,26 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -382,6 +388,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -432,8 +488,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -441,10 +526,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -456,9 +537,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -473,7 +551,6 @@ end 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 @@ -486,6 +563,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -494,6 +572,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -529,6 +608,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -594,7 +675,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -602,15 +682,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -618,6 +692,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -633,14 +709,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -665,11 +744,7 @@ end 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 @@ -677,16 +752,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -700,11 +769,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -714,8 +784,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -728,8 +816,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -765,8 +851,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -807,6 +891,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -821,6 +907,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -833,26 +921,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -861,6 +967,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -874,19 +1004,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -895,7 +1255,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -916,6 +1275,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -929,6 +1291,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -968,6 +1331,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -987,11 +1351,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1006,6 +1377,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1019,11 +1393,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1049,10 +1450,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1060,6 +1464,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1086,6 +1521,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1093,10 +1529,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1154,7 +1597,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1162,12 +1613,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1425,6 +1878,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1433,7 +1888,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1488,6 +1958,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1525,6 +1998,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1677,20 +2151,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1701,6 +2177,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1721,6 +2198,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1736,6 +2216,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1859,7 +2340,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1869,7 +2352,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1888,6 +2373,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1901,15 +2387,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1941,11 +2431,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2004,6 +2496,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2039,13 +2533,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2073,16 +2569,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2098,6 +2603,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2126,7 +2632,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2166,20 +2674,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2235,6 +2749,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2255,6 +2774,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2281,11 +2801,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2309,6 +2832,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2333,8 +2857,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2343,6 +2867,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2354,15 +2880,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2474,6 +3001,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2485,10 +3014,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2508,6 +3040,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2525,6 +3059,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2535,6 +3070,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3668,6 +4204,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3709,6 +4253,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3723,9 +4275,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5330,6 +5915,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5344,7 +5930,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5368,6 +5958,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5394,6 +5985,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6308,6 +6903,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6337,6 +6934,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6357,11 +6955,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7148,9 +7748,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7555,16 +8158,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8098,967 +8741,1718 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 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 +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkMemoryUnmapFlags = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR_T = Cvoid +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR_T = Cvoid +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end +const VkSurfaceKHR_T = Cvoid -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags +@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 -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} -end +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) -end +const VkSwapchainKHR_T = Cvoid -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +# 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 vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -const VkVideoDecodeUsageFlagsKHR = VkFlags +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end -const VkVideoDecodeFlagsKHR = VkFlags +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 -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, 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 vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, 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 vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end + +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end + +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 +end + +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR +end + +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +end + +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end + +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties +end + +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end + +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end + +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView +end + +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +end + +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements +end + +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end + +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end + +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end + +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end + +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end + +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, 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 vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, 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 vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, 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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, 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 vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, 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 vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeUsageFlagsKHR = VkFlags + +const VkVideoDecodeFlagsKHR = VkFlags + +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR +end + +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR +end + +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264AspectRatioIdc::UInt32 begin 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 @@ -9081,11571 +10475,22140 @@ end STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end + +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] +end + +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] +end + +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end + +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end + +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end + +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end + +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end + +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end + +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 +end + +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end + +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end + +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end + +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 +end + +struct VkVideoEncodeH264SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc +end + +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} +end + +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 +end + +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} +end + +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc +end + +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR +end + +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +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 + +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] +end + +struct StdVideoH265HrdParameters + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] +end + +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] +end + +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] +end + +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end + +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat end -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT end -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +# 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 -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) -end +const VkSurfaceCounterFlagsEXT = VkFlags -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +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 -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +@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 StdVideoH264PpsFlags - data::NTuple{4, UInt8} +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT end -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +# 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 Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) end -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) end -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) end -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +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 Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) end -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 end -@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags - -struct VkVideoDecodeH264ProfileInfoKHR +struct VkPresentTimesInfoGOOGLE sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} end -struct VkVideoDecodeH264CapabilitiesKHR +# 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + perViewPositionAllComponents::VkBool32 end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkMultiviewPerViewAttributesInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::VkBool32 end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +@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} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} end -struct VkVideoDecodeH264PictureInfoKHR +@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} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} + maxDiscardRectangles::UInt32 end -struct VkVideoDecodeH264DpbSlotInfoKHR +struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat end -struct VkRenderingFragmentDensityMapAttachmentInfoEXT +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + depthClipEnable::VkBool32 end -struct VkAttachmentSampleCountInfoAMD +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end -struct VkMultiviewPerViewAttributesInfoNVX +struct VkHdrMetadataEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} - -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 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} +const VkDebugUtilsMessengerEXT_T = Cvoid -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +@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 -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +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 -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# 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 vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) 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) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags - -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits +const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end -struct VkImportMemoryFdInfoKHR +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkMemoryFdPropertiesKHR +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 end -struct VkMemoryGetFdInfoKHR +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + maxSampleLocationGridSize::VkExtent2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) 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) +@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 -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 end -const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -struct VkImportSemaphoreFdInfoKHR +struct VkPipelineCoverageToColorStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 end -struct VkSemaphoreGetFdInfoKHR +@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} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} 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} +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -struct VkPhysicalDevicePushDescriptorPropertiesKHR +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{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} +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +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) +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +# 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 VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +const VkValidationCacheEXT_T = Cvoid -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end +const VkValidationCacheCreateFlagsEXT = VkFlags -struct VkPresentRegionsKHR +struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate - -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType - -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags - -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -# 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_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -const VkAttachmentDescription2KHR = VkAttachmentDescription2 +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -const VkAttachmentReference2KHR = VkAttachmentReference2 +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -const VkSubpassDescription2KHR = VkSubpassDescription2 +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -const VkSubpassDependency2KHR = VkSubpassDependency2 +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport -const VkSubpassBeginInfoKHR = VkSubpassBeginInfo +@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 -const VkSubpassEndInfoKHR = VkSubpassEndInfo +@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 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +# 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +const VkAccelerationStructureNV_T = Cvoid -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +@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 VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +const VkGeometryTypeNV = VkGeometryTypeKHR -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + 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 +end -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR -const VkExternalFencePropertiesKHR = VkExternalFenceProperties +@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 -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +@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 VkFenceImportFlagsKHR = VkFenceImportFlags +const VkGeometryFlagsKHR = VkFlags -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits +const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VkGeometryInstanceFlagsKHR = VkFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +@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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end +const VkBuildAccelerationStructureFlagsKHR = VkFlags -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR -@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 +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 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 +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 -@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 +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 -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize end -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV end -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR +struct VkGeometryNV sType::VkStructureType pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +struct VkAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} end -struct VkPerformanceCounterKHR +struct VkAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV end -struct VkPerformanceCounterDescriptionKHR +struct VkBindAccelerationStructureMemoryInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkWriteDescriptorSetAccelerationStructureNV 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 - -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} - -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} end -struct VkAcquireProfilingLockInfoKHR +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV end -struct VkPerformanceQuerySubmitInfoKHR +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::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} +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +const VkTransformMatrixNV = VkTransformMatrixKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +const VkAabbPositionsNV = VkAabbPositionsKHR -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +# 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} -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +# 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} -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR -end +# 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} -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR -end +# 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} -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +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 -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) -const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} +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 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements +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 -const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end -const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end -const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 +function vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end -const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end -const VkMemoryRequirements2KHR = VkMemoryRequirements2 +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end -const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end -# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -const VkChromaLocationKHR = VkChromaLocation +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +const VkPipelineCompilerControlFlagsAMD = VkFlags -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +const VkTimeDomainEXT = VkTimeDomainKHR -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) 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) +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 -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +@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 -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 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} +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures -# 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} +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits -# 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} +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags -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 +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback -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 VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures - -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features - -struct VkPhysicalDeviceShaderClockFeaturesKHR +struct VkPhysicalDeviceMeshShaderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 + 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 -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 end -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end +# 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} -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -struct StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -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 +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct StdVideoH265HrdFlags - data::NTuple{4, UInt8} +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 Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) - return getfield(x, f) +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 end -struct StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} -struct StdVideoH265VpsFlags - data::NTuple{4, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag - ref[] +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -struct StdVideoH265ProfileTierLevelFlags - data::NTuple{4, UInt8} +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) - return getfield(x, f) +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag - ref[] -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc -end +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) 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} +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) - return getfield(x, f) +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag - ref[] +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 end -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +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 -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 end -struct StdVideoH265SpsFlags - data::NTuple{4, UInt8} +@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 -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +@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::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end ref[] end -struct StdVideoH265ShortTermRefPicSetFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +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 StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +# 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 -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkVideoDecodeH265PictureInfoKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} + localDimmingSupport::VkBool32 end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} + localDimmingEnable::VkBool32 end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +# 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + fragmentDensityMapAttachment::VkAttachmentReference end -const VkDriverIdKHR = VkDriverId - -const VkConformanceVersionKHR = VkConformanceVersion - -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +const VkShaderCorePropertiesFlagsAMD = VkFlags -const VkSemaphoreTypeKHR = VkSemaphoreType +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 +end -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +@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 VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -struct VkFragmentShadingRateAttachmentInfoKHR +struct VkValidationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} -end +const VkComponentTypeNV = VkComponentTypeKHR -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +const VkScopeNV = VkScopeKHR + +struct VkCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV 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 + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + cooperativeMatrixSupportedStages::VkShaderStageFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +@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 -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + coverageReductionMode::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout - -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -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) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT end -const VkDeferredOperationKHR_T = Cvoid - -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} - -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT end -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkLineRasterizationModeEXT = VkLineRasterizationMode -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +# 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 -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) 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 +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 -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 -end +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline +# 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 VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) end -struct VkPipelineExecutableInfoKHR +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 + extendedDynamicState::VkBool32 end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] -end +# 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} -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -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 void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +# 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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -struct VkPresentIdKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -struct VkPhysicalDevicePresentIdFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentId::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 -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end -const VkAccessFlags2KHR = VkAccessFlags2 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end -const VkSubmitFlagsKHR = VkSubmitFlags +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +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 -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -struct VkQueueFamilyCheckpointProperties2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 -end +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -struct VkCheckpointData2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} -end +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkImageSubresource2EXT = VkImageSubresource2 -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} + +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + minPlacedMemoryMapAlignment::VkDeviceSize end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + pPlacedAddress::Ptr{Cvoid} end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -const VkCopyImageInfo2KHR = VkCopyImageInfo2 +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -const VkBufferCopy2KHR = VkBufferCopy2 +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -const VkImageCopy2KHR = VkImageCopy2 +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -const VkImageBlit2KHR = VkImageBlit2 +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -const VkImageResolve2KHR = VkImageResolve2 +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) -end +const VkIndirectCommandsLayoutNV_T = Cvoid -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) -end +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) -end +const VkIndirectStateFlagsNV = VkFlags -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +@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 -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +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 -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkIndirectCommandsLayoutTokenNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + 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 VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} - -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +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 - -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = 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_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -const VkDebugReportCallbackEXT_T = Cvoid +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) 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 +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkDebugReportFlagsEXT = VkFlags +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -# 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 VkPhysicalDeviceInheritedViewportScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 +end -struct VkDebugReportCallbackCreateInfoEXT +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) -const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -# 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} +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat 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) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -struct VkPipelineRasterizationStateRasterizationOrderAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 end -struct VkDebugMarkerObjectNameInfoEXT +const VkDeviceMemoryReportFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + deviceMemoryReport::VkBool32 end -struct VkDebugMarkerObjectTagInfoEXT +struct VkDeviceMemoryReportCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 end -struct VkDebugMarkerMarkerInfoEXT +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} + +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR + +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -struct VkDedicatedAllocationBufferCreateInfoNV +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + maxCustomBorderColorSamplers::UInt32 end -struct VkDedicatedAllocationMemoryAllocateInfoNV +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + presentBarrier::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkSurfaceCapabilitiesPresentBarrierNV 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 + presentBarrierSupported::VkBool32 end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 + presentBarrierEnable::VkBool32 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} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# 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} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# 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} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -# 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = 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 +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) 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) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 end -const VkCuModuleNVX_T = Cvoid +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end -const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 +end -const VkCuFunctionNVX_T = Cvoid +const VkTileShadingRenderPassFlagsQCOM = VkFlags -const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} +struct VkPhysicalDeviceTileShadingFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceTileShadingPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkCuFunctionCreateInfoNVX +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D end -struct VkCuLaunchInfoNVX +struct VkPerTileBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -struct VkImageViewHandleInfoNVX +struct VkDescriptorAddressInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -struct VkImageViewAddressPropertiesNVX +struct VkDescriptorBufferBindingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + address::VkDeviceAddress + usage::VkBufferUsageFlags 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) +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} end -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) end -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) 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 +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} 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 +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV +struct VkBufferCaptureDescriptorDataInfoEXT 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 - -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + buffer::VkBuffer end -struct VkExternalMemoryImageCreateInfoNV +struct VkImageCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV + image::VkImage end -struct VkExportMemoryAllocateInfoNV +struct VkImageViewCaptureDescriptorDataInfoEXT 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 + imageView::VkImageView end -struct VkValidationFlagsEXT +struct VkSamplerCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} + sampler::VkSampler end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures - -struct VkImageViewASTCDecodeModeEXT +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + opaqueCaptureDescriptorData::Ptr{Cvoid} end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV end -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRenderingEnable::VkBool32 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) -const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +end -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) - ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) -const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkReleaseDisplayEXT(physicalDevice, display) - ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkSurfaceCounterFlagsEXT = VkFlags +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags -struct VkSurfaceCapabilities2EXT +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT 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 + graphicsPipelineLibrary::VkBool32 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) +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT 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 +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 end -struct VkDisplayPowerInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkDeviceEventInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkDisplayEventInfoEXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} + +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags + +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags + +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkAccelerationStructureMotionInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat +end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) 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 +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} +end -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPipelineViewportSwizzleStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) +end -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} + +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -struct VkPipelineDiscardRectangleStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) +end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] +end -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + ycbcr2plane444Formats::VkBool32 end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + fragmentDensityMapDeferred::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 -end - -struct VkXYColorEXT - x::Cfloat - y::Cfloat + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkHdrMetadataEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat + transform::VkSurfaceTransformFlagBitsKHR 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 VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 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 +const VkImageCompressionFlagsEXT = VkFlags -@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + imageCompressionControl::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkImageCompressionControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -struct VkDebugUtilsMessengerCallbackDataEXT +struct VkImageCompressionPropertiesEXT 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} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + attachmentFeedbackLoopLayout::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 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) +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPhysicalDeviceFaultFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorType::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) -end +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT + +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkVertexInputBindingDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +struct VkPhysicalDeviceDrmPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +end -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +const VkDeviceAddressBindingFlagsEXT = VkFlags -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + reportAddressBinding::VkBool32 end -struct VkSampleLocationsInfoEXT +struct VkDeviceAddressBindingCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 end -struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + +struct VkSubpassShadingPipelineCreateInfoHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + renderPass::VkRenderPass + subpass::UInt32 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + subpassShading::VkBool32 end -struct VkMultisamplePropertiesEXT +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +end + +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -@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 +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT +const VkRemoteAddressNV = Ptr{Cvoid} + +struct VkMemoryGetRemoteAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT + externalMemoryRDMA::VkBool32 end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) 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 +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +const VkPipelineInfoEXT = VkPipelineInfoKHR -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPipelinePropertiesIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + pipelineIdentifier::NTuple{16, UInt8} end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + pipelinePropertiesIdentifier::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} + +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -struct VkDrmFormatModifierPropertiesListEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + frameBoundary::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkFrameBoundaryEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + multisampledRenderToSingleSampled::VkBool32 end -struct VkImageDrmFormatModifierPropertiesEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 + optimal::VkBool32 end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +struct VkMultisampledRenderToSingleSampledInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -struct VkDrmFormatModifierPropertiesList2EXT +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -const VkValidationCacheEXT_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -struct VkShaderModuleValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) 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) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits - -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags - -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo - -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures - -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties - -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo - -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} +end -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) 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 +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} + minLod::VkBool32 end -struct VkPhysicalDeviceShadingRateImageFeaturesNV +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 + minLod::Cfloat end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkPhysicalDeviceMultiDrawFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 + multiDraw::VkBool32 end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +struct VkPhysicalDeviceMultiDrawPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiDrawCount::UInt32 end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = 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_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) -const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkPhysicalDeviceShaderTileImageFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkPhysicalDeviceShaderTileImagePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -const VkAccelerationStructureNV_T = Cvoid +const VkMicromapEXT_T = Cvoid -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} +const VkMicromapEXT = Ptr{VkMicromapEXT_T} -@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 +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end -@cenum VkGeometryTypeKHR::UInt32 begin - 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 +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -const VkGeometryTypeNV = VkGeometryTypeKHR +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +end -@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 +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -@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 +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -const VkGeometryFlagsKHR = VkFlags +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end -const VkGeometryFlagsNV = VkGeometryFlagsKHR +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkGeometryInstanceFlagsKHR = VkFlags +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end + +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) +end -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkBuildAccelerationStructureFlagsKHR = VkFlags +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] +end -struct VkRayTracingShaderGroupCreateInfoNV +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkRayTracingPipelineCreateInfoNV +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT 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 + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkGeometryTrianglesNV +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT 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 + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkGeometryAABBNV +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize + pVersionData::Ptr{UInt8} end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkTransformMatrixNV = VkTransformMatrixKHR - -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -const VkAabbPositionsNV = VkAabbPositionsKHR +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) return getfield(x, f) end -function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) - r = Ref{VkAccelerationStructureInstanceKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap ref[] 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} +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = 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_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = 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_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = 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_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = 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 void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) 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) +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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) +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) 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) +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR - -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR - -struct VkImportMemoryHostPointerInfoEXT +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 end -struct VkMemoryHostPointerPropertiesEXT +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + clusterShadingRate::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = 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_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) 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) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -const VkPipelineCompilerControlFlagsAMD = VkFlags - -struct VkPipelineCompilerControlCreateInfoAMD +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 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 + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -struct VkCalibratedTimestampInfoEXT +struct VkSamplerBorderColorComponentMappingCreateInfoEXT 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 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, 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 vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + components::VkComponentMapping + srgb::VkBool32 end -struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT 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 + pageableDeviceLocalMemory::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) 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 +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkPhysicalDeviceShaderCorePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + shaderCoreCount::UInt32 end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT +struct VkPhysicalDeviceSchedulingControlsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 + imageSlicedViewOf3D::VkBool32 end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo - -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkImageViewSlicedCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 + sliceOffset::UInt32 + sliceCount::UInt32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 + descriptorSetHostMapping::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkDescriptorSetBindingReferenceVALVE 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 + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::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_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = 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} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) 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 +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceRenderPassStripedFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + renderPassStriped::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkPhysicalDeviceRenderPassStripedPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkRenderPassStripeInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 + stripeArea::VkRect2D 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) +struct VkRenderPassStripeBeginInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkRenderPassStripeSubmitInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + fragmentDensityMapOffset::VkBool32 end -struct VkCheckpointDataNV +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D 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} +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 + indirectCopy::VkBool32 end -const VkPerformanceConfigurationINTEL_T = Cvoid +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedQueues::VkQueueFlags +end -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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 +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) 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 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -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 +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 -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) +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV end -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 end -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} - -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -struct VkPerformanceStreamMarkerInfoINTEL +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - marker::UInt32 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkPerformanceOverrideInfoINTEL +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPerformanceConfigurationAcquireInfoINTEL +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline 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} +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 + imageCompressionControlSwapchain::VkBool32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCommandBufferNestingLevel::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 + acquireUnmodifiedMemory::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkRenderPassFragmentDensityMapCreateInfoEXT +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp +end -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 +end -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -const VkShaderCorePropertiesFlagsAMD = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} -@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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} -struct VkValidationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} -@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 +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) 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 +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) 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) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) 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 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags - -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -struct VkPipelineCoverageReductionStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -struct VkFramebufferMixedSamplesCombinationNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) 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) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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 +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) 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 +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# 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} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) 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) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +struct VkRenderPassCreationControlEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disallowMerging::VkBool32 end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) -end +const VkDirectDriverLoadingFlagsLUNARG = VkFlags -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 +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +struct VkDirectDriverLoadingInfoLUNARG + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +const VkTensorARM_T = Cvoid -const VkPresentScalingFlagsEXT = VkFlags +const VkTensorARM = Ptr{VkTensorARM_T} -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkTensorViewARM_T = Cvoid + +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPresentGravityFlagsEXT = VkFlags +const VkTensorCreateFlagsARM = VkFlags64 + +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 -struct VkSurfacePresentModeEXT +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkSurfacePresentScalingCapabilitiesEXT +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkSurfacePresentModeCompatibilityEXT +struct VkTensorViewCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + tensor::VkTensorARM end -struct VkSwapchainPresentFenceInfoEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkWriteDescriptorSetTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkSwapchainPresentModeInfoEXT +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -struct VkReleaseSwapchainImagesInfoEXT +struct VkTensorMemoryBarrierARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures - -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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 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 +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} end -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags - -struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV +struct VkTensorCopyARM sType::VkStructureType pNext::Ptr{Cvoid} - maxGraphicsShaderGroupCount::UInt32 - maxIndirectSequenceCount::UInt32 - maxIndirectCommandsTokenCount::UInt32 - maxIndirectCommandsStreamCount::UInt32 - maxIndirectCommandsTokenOffset::UInt32 - maxIndirectCommandsStreamStride::UInt32 - minSequencesCountBufferOffsetAlignment::UInt32 - minSequencesIndexBufferOffsetAlignment::UInt32 - minIndirectCommandsBufferOffsetAlignment::UInt32 + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV +struct VkCopyTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkGraphicsShaderGroupCreateInfoNV +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + tensor::VkTensorARM end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBufferTensorDescriptors::VkBool32 end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -struct VkIndirectCommandsLayoutTokenNV +struct VkTensorCaptureDescriptorDataInfoARM 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} + tensor::VkTensorARM end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + tensorView::VkTensorViewARM end -struct VkGeneratedCommandsInfoNV +struct VkFrameBoundaryTensorsARM 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 + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end + +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -struct VkGeneratedCommandsMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) -const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) -const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) -const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) -const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 + shaderModuleIdentifier::VkBool32 end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties - -struct VkRenderPassTransformBeginInfoQCOM +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end + +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end + +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end + +const VkOpticalFlowSessionNV_T = Cvoid + +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} + +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D + opticalFlow::VkBool32 end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +struct VkPhysicalDeviceOpticalFlowPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -const VkDeviceMemoryReportFlagsEXT = VkFlags +struct VkOpticalFlowImageFormatInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkOpticalFlowUsageFlagsNV +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 + format::VkFormat end -struct VkDeviceMemoryReportCallbackDataEXT +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} +struct VkOpticalFlowSessionCreatePrivateDataInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} +end -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end + +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end + +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkPhysicalDeviceRobustness2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkPhysicalDeviceRobustness2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + legacyDithering::VkBool32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + antiLag::VkBool32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkAntiLagPresentationInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkAntiLagDataAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -const VkPrivateDataSlotEXT = VkPrivateDataSlot +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) +end -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) +end -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo +const VkShaderEXT_T = Cvoid -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo +const VkShaderEXT = Ptr{VkShaderEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +const VkShaderCreateFlagsEXT = VkFlags -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkPhysicalDeviceShaderObjectFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderObject::VkBool32 end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkPhysicalDeviceShaderObjectPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +struct VkShaderCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) -end +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} -@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -struct VkDeviceDiagnosticsConfigCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -const VkAccelerationStructureKHR_T = Cvoid +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkDescriptorAddressInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkDescriptorBufferBindingInfoEXT +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + tileProperties::VkBool32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +end -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkDescriptorGetInfoEXT +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + amigoProfiling::VkBool32 end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkAmigoProfilingSubmitInfoSEC sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + multiviewPerViewViewports::VkBool32 end -struct VkImageViewCaptureDescriptorDataInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + rayTracingInvocationReorder::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedSparseAddressSpace::VkBool32 end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyVertexAttributes::VkBool32 end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nativeUnalignedPerformance::VkBool32 end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkLayerSettingsCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags - -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + shaderCoreBuiltins::VkBool32 end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + pipelineLibraryGroupHandles::VkBool32 end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + dynamicRenderingUnusedAttachments::VkBool32 end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkLatencySleepModeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + presentID::UInt64 + marker::VkLatencyMarkerNV end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkLatencyTimingsFrameReportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkGetLatencyMarkerInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +struct VkLatencySubmissionPresentIdNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags - -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags - -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +struct VkSwapchainLatencyCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +struct VkOutOfBandQueueTypeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + queueType::VkOutOfBandQueueTypeNV end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] -end +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -struct VkAccelerationStructureGeometryMotionTrianglesDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} + +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) end -struct VkAccelerationStructureMotionInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end + +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkDataGraphPipelineSessionCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + session::VkDataGraphPipelineSessionARM end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkDataGraphPipelineSessionBindPointRequirementARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -struct VkCopyCommandTransformInfoQCOM +struct VkBindDataGraphPipelineSessionMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +struct VkDataGraphPipelineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraphPipeline::VkPipeline +end -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -const VkImageCompressionFlagsEXT = VkFlags +struct VkDataGraphPipelineIdentifierCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineDispatchInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineDispatchFlagsARM end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM end -struct VkImageCompressionControlEXT +struct VkDataGraphProcessingEngineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkImageSubresource2EXT +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkImageCompressionPropertiesEXT +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) +end + +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) +end + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + multiviewPerViewRenderAreas::VkBool32 end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -struct VkPhysicalDeviceFaultFeaturesEXT +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + textureBlockMatch2::VkBool32 end -struct VkDeviceFaultCountsEXT +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize + maxBlockMatchWindow::VkExtent2D end -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + selectableCubicWeights::VkBool32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} - -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + cubicRangeClamp::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -struct VkMutableDescriptorTypeCreateInfoEXT +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 +end + +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + tileMemoryHeap::VkBool32 end -struct VkVertexInputAttributeDescription2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} - -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory end -struct VkPhysicalDeviceDrmPropertiesEXT +struct VkTileMemorySizeInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 + size::VkDeviceSize end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -const VkDeviceAddressBindingFlagsEXT = VkFlags +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) +end -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + hdmi3DSupported::VkBool32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkPhysicalDeviceRawAccessChainsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + shaderRawAccessChains::VkBool32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + reservedExternalQueues::UInt32 end -struct VkSubpassShadingPipelineCreateInfoHUAWEI +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 + preferredQueue::VkQueue end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI +struct VkExternalComputeQueueDataParamsNV sType::VkStructureType pNext::Ptr{Cvoid} - subpassShading::VkBool32 + deviceIndex::UInt32 end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - invocationMask::VkBool32 + commandBufferInheritance::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} - -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16VectorAtomics::VkBool32 end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderReplicatedComposites::VkBool32 end -const VkRemoteAddressNV = Ptr{Cvoid} - -struct VkMemoryGetRemoteAddressInfoNV +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 + rayTracingValidation::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -const VkPipelineInfoEXT = VkPipelineInfoKHR +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterAccelerationStructure::VkBool32 end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkSubpassResolvePerformanceQueryEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - optimal::VkBool32 + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkMultisampledRenderToSingleSampledInfoEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPipelineColorWriteCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkImageViewMinLodCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::Cfloat +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkPhysicalDeviceMultiDrawFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multiDraw::VkBool32 +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceMultiDrawPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} end -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -const VkMicromapEXT_T = Cvoid - -const VkMicromapEXT = Ptr{VkMicromapEXT_T} - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +struct VkAccelerationStructureBuildSizesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + allowClusterAccelerationStructure::VkBool32 end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -const VkBuildMicromapFlagsEXT = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -const VkMicromapCreateFlagsEXT = VkFlags - -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] -end +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags -struct VkMicromapBuildInfoEXT +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize + partitionedAccelerationStructure::VkBool32 end -struct VkMicromapCreateInfoEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 + enablePartitionTranslation::VkBool32 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -struct VkMicromapVersionInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkCopyMicromapToMemoryInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkCopyMicromapInfoEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -struct VkMicromapBuildSizesInfoEXT +struct VkPartitionedAccelerationStructureInstancesInputNV sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkBuildPartitionedAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} + +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} +const VkIndirectExecutionSetEXT_T = Cvoid -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} +const VkIndirectCommandsLayoutEXT_T = Cvoid -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 +end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 +end + +struct VkGeneratedCommandsMemoryRequirementsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkIndirectExecutionSetPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +struct VkIndirectExecutionSetShaderLayoutInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +struct VkIndirectExecutionSetShaderInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} + +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] +end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkIndirectCommandsLayoutCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT +struct VkGeneratedCommandsPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 + pipeline::VkPipeline end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 + index::UInt32 + shader::VkShaderEXT end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkDescriptorSetBindingReferenceVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA sType::VkStructureType pNext::Ptr{Cvoid} - indirectCopy::VkBool32 + imageAlignmentControl::VkBool32 end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA sType::VkStructureType pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) + supportedImageAlignmentMask::UInt32 end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +struct VkImageAlignmentControlCreateInfoMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + maximumRequestedAlignment::UInt32 end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +struct VkPhysicalDeviceDepthClampControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampControl::VkBool32 end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +struct VkPipelineViewportDepthClampControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 - -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 - -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + hdrVivid::VkBool32 end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +struct VkHdrVividDynamicMetadataHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} - -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + pipelineOpacityMicromap::VkBool32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + vertexAttributeRobustness::VkBool32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPhysicalDeviceFormatPackFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + formatPack::VkBool32 end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + fragmentDensityMapLayered::VkBool32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDevicePresentMeteringFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMetering::VkBool32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +struct VkRenderingEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + zeroInitializeDeviceMemory::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = 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_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +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 vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -struct VkRenderPassCreationControlEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disallowMerging::VkBool32 +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +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 VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +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 -const VkDirectDriverLoadingFlagsLUNARG = VkFlags - -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) +end -struct VkDirectDriverLoadingInfoLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -struct VkDirectDriverLoadingListLUNARG +struct VkRayTracingShaderGroupCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT +struct VkRayTracingPipelineInterfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT +struct VkRayTracingPipelineCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} + 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 -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -struct VkShaderModuleIdentifierEXT +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} - -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} -const VkOpticalFlowSessionNV_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} -const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +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 -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -const VkOpticalFlowGridSizeFlagsNV = VkFlags - -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowUsageFlagsNV = VkFlags +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowExecuteFlagsNV = VkFlags +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) +end -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -struct VkOpticalFlowSessionCreateInfoNV +struct VkPhysicalDeviceRayQueryFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV + rayQuery::VkBool32 end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkOpticalFlowExecuteInfoNV +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VkMacOSSurfaceCreateFlagsMVK = VkFlags -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) +struct VkMacOSSurfaceCreateInfoMVK + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMacOSSurfaceCreateFlagsMVK + pView::Ptr{Cvoid} end -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT +const CAMetalLayer = Cvoid + +const VkMetalSurfaceCreateFlagsEXT = VkFlags + +struct VkMetalSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 + flags::VkMetalSurfaceCreateFlagsEXT + pLayer::Ptr{CAMetalLayer} end -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 +# 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 -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D +function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const MTLDevice_id = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const MTLCommandQueue_id = Ptr{Cvoid} -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const MTLBuffer_id = Ptr{Cvoid} -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const MTLTexture_id = Ptr{Cvoid} -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +const __IOSurface = Cvoid + +const IOSurfaceRef = Ptr{__IOSurface} + +const MTLSharedEvent_id = Ptr{Cvoid} + +@cenum VkExportMetalObjectTypeFlagBitsEXT::UInt32 begin + VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 1 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 2 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 4 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 8 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 16 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 32 + VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +const VkExportMetalObjectTypeFlagsEXT = VkFlags + +struct VkExportMetalObjectCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + exportObjectType::VkExportMetalObjectTypeFlagBitsEXT end -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC +struct VkExportMetalObjectsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 end -struct VkAmigoProfilingSubmitInfoSEC +struct VkExportMetalDeviceInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 + mtlDevice::MTLDevice_id end -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM +struct VkExportMetalCommandQueueInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 + queue::VkQueue + mtlCommandQueue::MTLCommandQueue_id end -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +struct VkExportMetalBufferInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + mtlBuffer::MTLBuffer_id end -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV +struct VkImportMetalBufferInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV + mtlBuffer::MTLBuffer_id end -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV +struct VkExportMetalTextureInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 + image::VkImage + imageView::VkImageView + bufferView::VkBufferView + plane::VkImageAspectFlagBits + mtlTexture::MTLTexture_id end -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM +struct VkImportMetalTextureInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 + plane::VkImageAspectFlagBits + mtlTexture::MTLTexture_id end -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM +struct VkExportMetalIOSurfaceInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 + image::VkImage + ioSurface::IOSurfaceRef end -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT +struct VkImportMetalIOSurfaceInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 + ioSurface::IOSurfaceRef end -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 +struct VkExportMetalSharedEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + event::VkEvent + mtlSharedEvent::MTLSharedEvent_id end -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkImportMetalSharedEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mtlSharedEvent::MTLSharedEvent_id end -const VkAccelerationStructureCreateFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkExportMetalObjectsEXT ) ( VkDevice device , VkExportMetalObjectsInfoEXT * pMetalObjectsInfo ) +const PFN_vkExportMetalObjectsEXT = Ptr{Cvoid} -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 +function vkExportMetalObjectsEXT(device, pMetalObjectsInfo) + ccall((:vkExportMetalObjectsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkExportMetalObjectsInfoEXT}), device, pMetalObjectsInfo) end -struct VkAccelerationStructureGeometryTrianglesDataKHR +function vkExportMetalObjectsEXT(device, pMetalObjectsInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkExportMetalObjectsInfoEXT}), device, pMetalObjectsInfo) +end + +struct VkImportMemoryMetalHandleInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR + handleType::VkExternalMemoryHandleTypeFlagBits + handle::Ptr{Cvoid} end -struct VkAccelerationStructureGeometryAabbsDataKHR +struct VkMemoryMetalHandlePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize + memoryTypeBits::UInt32 end -struct VkAccelerationStructureGeometryInstancesDataKHR +struct VkMemoryGetMetalHandleInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryMetalHandleEXT ) ( VkDevice device , const VkMemoryGetMetalHandleInfoEXT * pGetMetalHandleInfo , void * * pHandle ) +const PFN_vkGetMemoryMetalHandleEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryMetalHandlePropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHandle , VkMemoryMetalHandlePropertiesEXT * pMemoryMetalHandleProperties ) +const PFN_vkGetMemoryMetalHandlePropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle) + ccall((:vkGetMemoryMetalHandleEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetMetalHandleInfoEXT}, Ptr{Ptr{Cvoid}}), device, pGetMetalHandleInfo, pHandle) end -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) +function vkGetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetMetalHandleInfoEXT}, Ptr{Ptr{Cvoid}}), device, pGetMetalHandleInfo, pHandle) end -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties) + ccall((:vkGetMemoryMetalHandlePropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryMetalHandlePropertiesEXT}), device, handleType, pHandle, pMemoryMetalHandleProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkGetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryMetalHandlePropertiesEXT}), device, handleType, pHandle, pMemoryMetalHandleProperties) end -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VULKAN_H_ = 1 -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VULKAN_CORE_H_ = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_VERSION_1_0 = 1 -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_USE_64_BIT_PTR_DEFINES = 1 -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_HEADER_VERSION = 321 -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_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_FALSE = Cuint(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 = Cuint(1) + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = Cuint(32) + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) + +const VK_UUID_SIZE = Cuint(16) + +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) + +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) + +const VK_MAX_MEMORY_HEAPS = Cuint(16) + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) + +const VK_LUID_SIZE = Cuint(8) + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) + +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) + +const VK_VERSION_1_3 = 1 + +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) + +const VK_VERSION_1_4 = 1 + +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) + +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) + +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_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 + +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_KHR_video_decode_queue = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const VK_KHR_video_encode_h264 = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# 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} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const VK_KHR_video_encode_h265 = 1 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const vulkan_video_codec_h265std = 1 -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 +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -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 +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -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 +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -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_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_video_decode_h264 = 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 VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_dynamic_rendering = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_multiview = 1 -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 +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -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 +const VK_KHR_get_physical_device_properties2 = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -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 +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_shader_draw_parameters = 1 -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_maintenance1 = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_device_group_creation = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_external_memory_capabilities = 1 -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_external_memory = 1 -const VkMacOSSurfaceCreateFlagsMVK = VkFlags +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -struct VkMacOSSurfaceCreateInfoMVK - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMacOSSurfaceCreateFlagsMVK - pView::Ptr{Cvoid} -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_memory_fd = 1 -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -const CAMetalLayer = Cvoid +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkMetalSurfaceCreateFlagsEXT = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -struct VkMetalSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMetalSurfaceCreateFlagsEXT - pLayer::Ptr{CAMetalLayer} -end +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore = 1 -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -const MTLDevice_id = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -const MTLCommandQueue_id = Ptr{Cvoid} +const VK_KHR_external_semaphore_fd = 1 -const MTLBuffer_id = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -const MTLTexture_id = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -const __IOSurface = Cvoid +const VK_KHR_push_descriptor = 1 -const IOSurfaceRef = Ptr{__IOSurface} +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 -const MTLSharedEvent_id = Ptr{Cvoid} +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" -@cenum VkExportMetalObjectTypeFlagBitsEXT::UInt32 begin - VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 1 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 2 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 4 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 8 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 16 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 32 - VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +const VK_KHR_shader_float16_int8 = 1 -const VkExportMetalObjectTypeFlagsEXT = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 -struct VkExportMetalObjectCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - exportObjectType::VkExportMetalObjectTypeFlagBitsEXT -end +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkExportMetalObjectsInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} -end +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 -struct VkExportMetalDeviceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mtlDevice::MTLDevice_id -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkExportMetalCommandQueueInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - queue::VkQueue - mtlCommandQueue::MTLCommandQueue_id -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -struct VkExportMetalBufferInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - mtlBuffer::MTLBuffer_id -end +const VK_KHR_imageless_framebuffer = 1 -struct VkImportMetalBufferInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mtlBuffer::MTLBuffer_id -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -struct VkExportMetalTextureInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - imageView::VkImageView - bufferView::VkBufferView - plane::VkImageAspectFlagBits - mtlTexture::MTLTexture_id -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -struct VkImportMetalTextureInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - plane::VkImageAspectFlagBits - mtlTexture::MTLTexture_id -end +const VK_KHR_create_renderpass2 = 1 -struct VkExportMetalIOSurfaceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - ioSurface::IOSurfaceRef -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -struct VkImportMetalIOSurfaceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ioSurface::IOSurfaceRef -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -struct VkExportMetalSharedEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - event::VkEvent - mtlSharedEvent::MTLSharedEvent_id -end +const VK_KHR_shared_presentable_image = 1 -struct VkImportMetalSharedEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mtlSharedEvent::MTLSharedEvent_id -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkExportMetalObjectsEXT ) ( VkDevice device , VkExportMetalObjectsInfoEXT * pMetalObjectsInfo ) -const PFN_vkExportMetalObjectsEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkExportMetalObjectsEXT(device, pMetalObjectsInfo) - ccall((:vkExportMetalObjectsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkExportMetalObjectsInfoEXT}), device, pMetalObjectsInfo) -end +const VK_KHR_external_fence_capabilities = 1 -function vkExportMetalObjectsEXT(device, pMetalObjectsInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkExportMetalObjectsInfoEXT}), device, pMetalObjectsInfo) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -const VULKAN_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_CORE_H_ = 1 +const VK_KHR_external_fence = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_USE_64_BIT_PTR_DEFINES = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) +const VK_KHR_external_fence_fd = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_HEADER_VERSION = 240 +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_performance_query = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_FALSE = Cuint(0) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_maintenance2 = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_TRUE = Cuint(1) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_variable_pointers = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_VERSION_1_1 = 1 +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_dedicated_allocation = 1 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_VERSION_1_3 = 1 +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_relaxed_block_layout = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_image_format_list = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_bind_memory2 = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_maintenance3 = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_video_decode_queue = 1 +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_shader_clock = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VK_KHR_video_decode_h265 = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const vulkan_video_codec_h265std_decode = 1 -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_dynamic_rendering = 1 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_multiview = 1 +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_get_physical_device_properties2 = 1 +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_driver_properties = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_maintenance1 = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +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_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20715,13 +32678,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20793,7 +32756,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20899,7 +32862,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20917,16 +32880,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21169,7 +33138,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21293,7 +33262,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21363,6 +33332,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21407,10 +33388,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21471,6 +33458,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21515,7 +33514,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21545,7 +33544,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21597,9 +33596,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21621,6 +33626,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21651,7 +33662,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21671,6 +33682,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21685,7 +33702,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21701,6 +33718,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21719,9 +33756,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21737,6 +33780,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21761,6 +33816,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21779,6 +33846,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21801,7 +33874,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21811,6 +33884,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21835,12 +33920,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21853,6 +33962,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 @@ -21895,7 +34224,13 @@ const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" const VK_EXT_metal_objects = 1 -const VK_EXT_METAL_OBJECTS_SPEC_VERSION = 1 +const VK_EXT_METAL_OBJECTS_SPEC_VERSION = 2 const VK_EXT_METAL_OBJECTS_EXTENSION_NAME = "VK_EXT_metal_objects" +const VK_EXT_external_memory_metal = 1 + +const VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME = "VK_EXT_external_memory_metal" + diff --git a/lib/aarch64-linux-gnu.jl b/lib/aarch64-linux-gnu.jl index 56081ed..d2d4b92 100644 --- a/lib/aarch64-linux-gnu.jl +++ b/lib/aarch64-linux-gnu.jl @@ -151,6 +151,7 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -165,21 +166,26 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -400,6 +406,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -450,8 +506,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -459,10 +544,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -474,9 +555,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -491,7 +569,6 @@ end 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 @@ -504,6 +581,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -512,6 +590,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -547,6 +626,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -612,7 +693,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -620,15 +700,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -636,6 +710,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -651,14 +727,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -683,11 +762,7 @@ end 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 @@ -695,16 +770,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -718,11 +787,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -732,8 +802,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -746,8 +834,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -783,8 +869,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -825,6 +909,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -839,6 +925,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -851,26 +939,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -879,6 +985,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -892,19 +1022,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -913,7 +1273,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -934,6 +1293,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -947,6 +1309,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -986,6 +1349,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -1005,11 +1369,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1024,6 +1395,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1037,11 +1411,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1067,10 +1468,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1078,6 +1482,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1104,6 +1539,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1111,10 +1547,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1172,7 +1615,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1180,12 +1631,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1443,6 +1896,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1451,7 +1906,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1506,6 +1976,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1543,6 +2016,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1695,20 +2169,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1719,6 +2195,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1739,6 +2216,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1754,6 +2234,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1877,7 +2358,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1887,7 +2370,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1906,6 +2391,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1919,15 +2405,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1959,11 +2449,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2022,6 +2514,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2057,13 +2551,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2091,16 +2587,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2116,6 +2621,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,7 +2650,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2184,20 +2692,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2253,6 +2767,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2273,6 +2792,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2299,11 +2819,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2327,6 +2850,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2351,8 +2875,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2361,6 +2885,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2372,15 +2898,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2492,6 +3019,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,10 +3032,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2526,6 +3058,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2543,6 +3077,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2553,6 +3088,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3686,6 +4222,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3727,6 +4271,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3741,9 +4293,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5348,6 +5933,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5362,7 +5948,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5386,6 +5976,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5412,6 +6003,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6326,6 +6921,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6355,6 +6952,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6375,11 +6973,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7166,9 +7766,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7573,16 +8176,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8116,967 +8759,1718 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 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 +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkMemoryUnmapFlags = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR_T = Cvoid +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR_T = Cvoid +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end +const VkSurfaceKHR_T = Cvoid -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags +@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 -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} -end +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) -end +const VkSwapchainKHR_T = Cvoid -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +# 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 vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -const VkVideoDecodeUsageFlagsKHR = VkFlags +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end -const VkVideoDecodeFlagsKHR = VkFlags +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 -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, 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 vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, 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 vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end + +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end + +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 +end + +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR +end + +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +end + +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end + +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties +end + +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end + +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end + +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView +end + +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +end + +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements +end + +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end + +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end + +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end + +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end + +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end + +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, 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 vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, 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 vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, 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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, 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 vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, 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 vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeUsageFlagsKHR = VkFlags + +const VkVideoDecodeFlagsKHR = VkFlags + +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR +end + +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR +end + +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264AspectRatioIdc::UInt32 begin 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 @@ -9099,11533 +10493,22060 @@ end STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end + +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] +end + +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] +end + +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end + +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end + +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end + +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end + +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end + +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end + +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 +end + +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end + +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end + +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end + +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 +end + +struct VkVideoEncodeH264SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc +end + +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} +end + +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 +end + +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} +end + +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc +end + +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR +end + +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +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 + +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] +end + +struct StdVideoH265HrdParameters + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] +end + +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] +end + +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] +end + +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end + +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +# 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 -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +@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 -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +# 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 -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +@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 StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +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 -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +# 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 -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +# 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 -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat end -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) end -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} +# 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 -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +@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 VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end -struct VkVideoDecodeH264ProfileInfoKHR +struct VkDisplayPowerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + powerState::VkDisplayPowerStateEXT end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkDeviceEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + deviceEvent::VkDeviceEventTypeEXT end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkDisplayEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + displayEvent::VkDisplayEventTypeEXT end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkSwapchainCounterCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + surfaceCounters::VkSurfaceCounterFlagsEXT end -struct VkVideoDecodeH264PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} +# 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 -struct VkVideoDecodeH264DpbSlotInfoKHR +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +struct VkMultiviewPerViewAttributesInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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 VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkPipelineViewportSwizzleStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} end -struct VkAttachmentSampleCountInfoAMD +@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} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + maxDiscardRectangles::UInt32 end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX +struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo - -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures - -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkFormatProperties2KHR = VkFormatProperties2 +@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 VkImageFormatProperties2KHR = VkImageFormatProperties2 +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 +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 VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +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_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +const VkDebugUtilsMessengerEXT_T = Cvoid -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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 -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +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 -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# 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 vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) 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) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits +const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end -struct VkImportMemoryFdInfoKHR +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkMemoryFdPropertiesKHR +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 end -struct VkMemoryGetFdInfoKHR +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + maxSampleLocationGridSize::VkExtent2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags - -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits - -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags +@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 -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end -const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) -const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@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 VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD -struct VkImportSemaphoreFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 end -struct VkSemaphoreGetFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits + shaderSMBuiltins::VkBool32 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) +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} end -struct VkPhysicalDevicePushDescriptorPropertiesKHR +struct VkImageDrmFormatModifierExplicitCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} 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) +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +# 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 VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +const VkValidationCacheEXT_T = Cvoid -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end +const VkValidationCacheCreateFlagsEXT = VkFlags -struct VkPresentRegionsKHR +struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate - -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType - -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags - -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -# 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_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) 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 +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} end -struct VkSharedPresentSurfaceCapabilitiesKHR +struct VkPhysicalDeviceShadingRateImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -const VkExternalFencePropertiesKHR = VkExternalFenceProperties +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -const VkFenceImportFlagsKHR = VkFenceImportFlags +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits +const VkAccelerationStructureNV_T = Cvoid -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint +@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 VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +const VkGeometryTypeNV = VkGeometryTypeKHR -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + 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 end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@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 -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR -@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 +@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 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 +@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 -@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 +const VkGeometryFlagsKHR = VkFlags -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 -end +const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkAcquireProfilingLockFlagsKHR = VkFlags +const VkGeometryInstanceFlagsKHR = VkFlags -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 end -struct VkPerformanceCounterKHR +struct VkRayTracingPipelineCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 end -struct VkPerformanceCounterDescriptionKHR +struct VkGeometryTrianglesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkGeometryAABBNV sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV 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) +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR 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) +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} end -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} +struct VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} end -struct VkAcquireProfilingLockInfoKHR +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV end -struct VkPerformanceQuerySubmitInfoKHR +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::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} +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +const VkTransformMatrixNV = VkTransformMatrixKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +const VkAabbPositionsNV = VkAabbPositionsKHR -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +# 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} -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +# 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} -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +# 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} -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) 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) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +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 -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) end -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) 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) +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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) 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) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo - -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion - -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion - -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange - -const VkChromaLocationKHR = VkChromaLocation - -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo - -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +# 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 -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD end -const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties +const VkTimeDomainEXT = VkTimeDomainKHR -const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) -const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) 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} +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end -# 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 vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +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) +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 -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +@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 -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) +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures -struct VkPhysicalDeviceShaderClockFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 -end +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 end -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +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 StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 end -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -struct StdVideoH265HrdFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) - return getfield(x, f) +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +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 StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct StdVideoH265VpsFlags - data::NTuple{4, UInt8} +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag - ref[] +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -struct StdVideoH265ProfileTierLevelFlags - data::NTuple{4, UInt8} +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) - return getfield(x, f) +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag - ref[] +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 end -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +# 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) 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} +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) - return getfield(x, f) +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag - ref[] +@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 -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +@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 -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +@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 StdVideoH265SpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +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::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end ref[] end -struct StdVideoH265ShortTermRefPicSetFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 end -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +# 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 -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkVideoDecodeH265PictureInfoKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} + localDimmingSupport::VkBool32 end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} + localDimmingEnable::VkBool32 end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +# 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + fragmentDensityMapAttachment::VkAttachmentReference end -const VkDriverIdKHR = VkDriverId +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end -const VkConformanceVersionKHR = VkConformanceVersion +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkShaderCorePropertiesFlagsAMD = VkFlags -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end -const VkSemaphoreTypeKHR = VkSemaphoreType +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 +end -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +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 -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +const VkComponentTypeNV = VkComponentTypeKHR -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +const VkScopeNV = VkScopeKHR -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkFragmentShadingRateAttachmentInfoKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + cooperativeMatrixSupportedStages::VkShaderStageFlags end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +# 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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + coverageReductionMode::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPipelineCoverageReductionStateCreateInfoNV 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 + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceProvokingVertexFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +end -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkHeadlessSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + flags::VkHeadlessSurfaceCreateFlagsEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkLineRasterizationModeEXT = VkLineRasterizationMode -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +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 -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +# 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 -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} +# 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 VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +# 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 vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) 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 +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 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutableInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} +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 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} -end +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -struct VkPresentIdKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} -end +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -struct VkPhysicalDevicePresentIdFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentId::VkBool32 -end +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +const VkImageSubresource2EXT = VkImageSubresource2 -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkAccessFlags2KHR = VkAccessFlags2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -const VkSubmitFlagsKHR = VkSubmitFlags +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minPlacedMemoryMapAlignment::VkDeviceSize +end -struct VkQueueFamilyCheckpointProperties2NV +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + pPlacedAddress::Ptr{Cvoid} end -struct VkCheckpointData2NV +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkIndirectCommandsLayoutNV_T = Cvoid -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) -end +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end +const VkIndirectStateFlagsNV = VkFlags -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +@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 -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + deviceGeneratedCommands::VkBool32 end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkGraphicsShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkGraphicsPipelineShaderGroupsCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end -const VkBufferCopy2KHR = VkBufferCopy2 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end -const VkImageCopy2KHR = VkImageCopy2 +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 VkImageBlit2KHR = VkImageBlit2 +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +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 VkImageResolve2KHR = VkImageResolve2 +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = 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_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = 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_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 - -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 - -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties - -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements - -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} - -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -const VkDebugReportCallbackEXT_T = Cvoid +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 +end -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} +const VkDeviceMemoryReportFlagsEXT = VkFlags -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMemoryReport::VkBool32 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 +struct VkDeviceMemoryReportCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 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} +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} -struct VkDebugReportCallbackCreateInfoEXT +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT 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 VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -# 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} +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -struct VkDebugMarkerObjectNameInfoEXT +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + presentBarrier::VkBool32 end -struct VkDebugMarkerObjectTagInfoEXT +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + presentBarrierSupported::VkBool32 end -struct VkDebugMarkerMarkerInfoEXT +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + presentBarrierEnable::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkDedicatedAllocationImageCreateInfoNV +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + diagnosticsConfig::VkBool32 end -struct VkDedicatedAllocationBufferCreateInfoNV +struct VkDeviceDiagnosticsConfigCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + flags::VkDeviceDiagnosticsConfigFlagsNV end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags +const VkTileShadingRenderPassFlagsQCOM = VkFlags -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDeviceTileShadingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkPhysicalDeviceTileShadingPropertiesQCOM 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 + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D 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) +struct VkPerTileBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) 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) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -const VkCuModuleNVX_T = Cvoid +const VkAccelerationStructureKHR_T = Cvoid -const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} -const VkCuFunctionNVX_T = Cvoid +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize +end -const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -struct VkCuFunctionCreateInfoNVX +struct VkDescriptorAddressInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -struct VkCuLaunchInfoNVX +struct VkDescriptorBufferBindingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} + +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkImageViewHandleInfoNVX +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} imageView::VkImageView - descriptorType::VkDescriptorType +end + +struct VkSamplerCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} sampler::VkSampler end -struct VkImageViewAddressPropertiesNVX +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + opaqueCaptureDescriptorData::Ptr{Cvoid} end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -# 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_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) 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) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) 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 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +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) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) 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 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -const VkExternalMemoryHandleTypeFlagsNV = VkFlags +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -@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 +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -const VkExternalMemoryFeatureFlagsNV = VkFlags +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) 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 vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + graphicsPipelineLibrary::VkBool32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT +struct VkGraphicsPipelineLibraryCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 + flags::VkGraphicsPipelineLibraryFlagsEXT end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT + shaderEarlyAndLateFragmentTests::VkBool32 end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} 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) +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} 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 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -struct VkDisplayEventInfoEXT +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) 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) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 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 +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcr2plane444Formats::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + transform::VkSurfaceTransformFlagBitsKHR end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end +const VkImageCompressionFlagsEXT = VkFlags -@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 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + imageCompressionControl::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkImageCompressionControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +struct VkImageCompressionPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + attachmentFeedbackLoopLayout::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkHdrMetadataEXT +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceFaultFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize +end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -const VkDebugUtilsMessengerEXT_T = Cvoid +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} +end -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 +end -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} -@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 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +end + +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + mutableDescriptorType::VkBool32 end -struct VkDebugUtilsMessengerCallbackDataEXT +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} +end + +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT + +struct VkMutableDescriptorTypeCreateInfoEXT 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} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkVertexInputBindingDescription2EXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 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} +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +struct VkPhysicalDeviceDrmPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +const VkDeviceAddressBindingFlagsEXT = VkFlags -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + reportAddressBinding::VkBool32 end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +struct VkSubpassShadingPipelineCreateInfoHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassShading::VkBool32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end +const VkRemoteAddressNV = Ptr{Cvoid} -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkMemoryGetRemoteAddressInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryRDMA::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +end -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +const VkPipelineInfoEXT = VkPipelineInfoKHR -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkSampleLocationsInfoEXT +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} -end - -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + frameBoundary::VkBool32 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkFrameBoundaryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + multisampledRenderToSingleSampled::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + optimal::VkBool32 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -struct VkMultisamplePropertiesEXT +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} + +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) 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 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +end -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) 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 +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + colorWriteEnable::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPipelineColorWriteCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesListEXT +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + minLod::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + minLod::Cfloat end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkPhysicalDeviceMultiDrawFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + multiDraw::VkBool32 end -struct VkImageDrmFormatModifierPropertiesEXT +struct VkPhysicalDeviceMultiDrawPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 + maxMultiDrawCount::UInt32 end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} + +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -const VkValidationCacheEXT_T = Cvoid +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImageFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT_T = Cvoid -# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT = Ptr{VkMicromapEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -@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 +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) 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 +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} + pVersionData::Ptr{UInt8} 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) +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} end -const VkAccelerationStructureNV_T = Cvoid - -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkGeometryTypeKHR::UInt32 begin - 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 +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -const VkGeometryTypeNV = VkGeometryTypeKHR +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -@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 +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -const VkGeometryFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagsNV = VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} + +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -const VkAabbPositionsNV = VkAabbPositionsKHR +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterShadingRate::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkSamplerBorderColorComponentMappingCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + components::VkComponentMapping + srgb::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pageableDeviceLocalMemory::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) 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) +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 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) +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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) +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 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) +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 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) +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) 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 +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkRenderPassStripeInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + stripeArea::VkRect2D end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkRenderPassStripeBeginInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT +struct VkRenderPassStripeSubmitInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageViewType::VkImageViewType + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -struct VkFilterCubicImageViewImageFormatPropertiesEXT +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 + fragmentDensityMapOffset::VkBool32 end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -struct VkImportMemoryHostPointerInfoEXT +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} end -struct VkMemoryHostPointerPropertiesEXT +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT + +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize +end + +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + indirectCopy::VkBool32 end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + supportedQueues::VkQueueFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = 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_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV 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 +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 end -struct VkCalibratedTimestampInfoEXT +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) 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) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV 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 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV 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 + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + imageCompressionControlSwapchain::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::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) +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + maxCommandBufferNestingLevel::UInt32 end -struct VkCheckpointDataNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + acquireUnmodifiedMemory::VkBool32 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) +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) 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) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +end -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) end -const VkShaderCorePropertiesFlagsAMD = VkFlags +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +end -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +end -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +end -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +end -@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 +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 end -struct VkValidationFeaturesEXT +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + disallowMerging::VkBool32 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 +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 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 +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -struct VkCooperativeMatrixPropertiesNV +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end + +struct VkRenderPassSubpassFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +end + +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} +const VkTensorARM_T = Cvoid -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorARM = Ptr{VkTensorARM_T} -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorViewARM_T = Cvoid -@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 +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +const VkTensorCreateFlagsARM = VkFlags64 -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 + +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkFramebufferMixedSamplesCombinationNV +struct VkTensorViewCreateInfoARM 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 - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 + tensor::VkTensorARM end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +struct VkWriteDescriptorSetTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT +struct VkTensorMemoryBarrierARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT +struct VkTensorDependencyInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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) +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} 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 +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT +struct VkCopyTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 + tensor::VkTensorARM end -struct VkPipelineRasterizationLineStateCreateInfoEXT +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits 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) +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM 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 + descriptorBufferTensorDescriptors::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} +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkTensorCaptureDescriptorDataInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + tensorView::VkTensorViewARM end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = 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_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = 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_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = 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 VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = 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 vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 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) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -const VkPresentScalingFlagsEXT = VkFlags +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) end -const VkPresentGravityFlagsEXT = VkFlags +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -struct VkSurfacePresentModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR +const VkOpticalFlowSessionNV_T = Cvoid + +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} + +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentScalingCapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentModeCompatibilityEXT +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + opticalFlow::VkBool32 end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkPhysicalDeviceOpticalFlowPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -struct VkSwapchainPresentFenceInfoEXT +struct VkOpticalFlowImageFormatInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + usage::VkOpticalFlowUsageFlagsNV end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + format::VkFormat end -struct VkSwapchainPresentModeInfoEXT +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkOpticalFlowSessionCreatePrivateDataInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -struct VkReleaseSwapchainImagesInfoEXT +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV_T = Cvoid +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyDithering::VkBool32 end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 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} +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + antiLag::VkBool32 end -struct VkGeneratedCommandsInfoNV +struct VkAntiLagPresentationInfoAMD 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 + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkAntiLagDataAMD 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 vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, 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 vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +const VkShaderEXT_T = Cvoid + +const VkShaderEXT = Ptr{VkShaderEXT_T} + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 + shaderObject::VkBool32 end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -struct VkRenderPassTransformBeginInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkDeviceMemoryReportFlagsEXT = VkFlags +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -struct VkDeviceMemoryReportCallbackDataEXT +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + tileProperties::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + amigoProfiling::VkBool32 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkAmigoProfilingSubmitInfoSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + multiviewPerViewViewports::VkBool32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + rayTracingInvocationReorder::VkBool32 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkPhysicalDeviceCooperativeVectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -const VkPrivateDataSlotEXT = VkPrivateDataSlot - -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags - -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures - -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo - -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) +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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + extendedSparseAddressSpace::VkBool32 end -const VkAccelerationStructureKHR_T = Cvoid - -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + legacyVertexAttributes::VkBool32 end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + nativeUnalignedPerformance::VkBool32 end -struct VkDescriptorAddressInfoEXT +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end + +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDescriptorBufferBindingInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + shaderCoreBuiltins::VkBool32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkDescriptorGetInfoEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + presentID::UInt64 end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + queueType::VkOutOfBandQueueTypeNV end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkDataGraphPipelineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkDataGraphPipelinePropertyQueryResultARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + flags::VkDataGraphPipelineDispatchFlagsARM end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM +end + +struct VkDataGraphProcessingEngineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureMotionInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + multiviewPerViewRenderAreas::VkBool32 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 +end + +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkBlitImageCubicWeightsInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + cubicRangeClamp::VkBool32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + tileMemoryHeap::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -struct VkImageSubresource2EXT +struct VkTileMemoryRequirementsQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + size::VkDeviceSize + alignment::VkDeviceSize end -struct VkImageCompressionPropertiesEXT +struct VkTileMemoryBindInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + memory::VkDeviceMemory end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} + +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + hdmi3DSupported::VkBool32 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRawAccessChainsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRawAccessChains::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 -end +const VkExternalComputeQueueNV_T = Cvoid -struct VkPhysicalDeviceFaultFeaturesEXT +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + reservedExternalQueues::UInt32 end -struct VkDeviceFaultCountsEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize -end - -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize + preferredQueue::VkQueue end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkExternalComputeQueueDataParamsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndex::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 -end - -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} + shaderFloat16VectorAtomics::VkBool32 end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT - -struct VkMutableDescriptorTypeCreateInfoEXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + shaderReplicatedComposites::VkBool32 end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + rayTracingValidation::VkBool32 end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkDeviceAddressBindingFlagsEXT = VkFlags +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} - -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} - -struct VkMemoryGetRemoteAddressInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPipelineInfoEXT = VkPipelineInfoKHR +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkSubpassResolvePerformanceQueryEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - optimal::VkBool32 +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkMultisampledRenderToSingleSampledInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPipelineColorWriteCreateInfoEXT +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} + allowClusterAccelerationStructure::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkImageViewMinLodCreateInfoEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 -end - -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 -end - -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 + enablePartitionTranslation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 -end - -const VkMicromapEXT_T = Cvoid - -const VkMicromapEXT = Ptr{VkMicromapEXT_T} - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkPartitionedAccelerationStructureInstancesInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkBuildPartitionedAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkBuildMicromapFlagsEXT = VkFlags - -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkMicromapCreateFlagsEXT = VkFlags - -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 -end +const VkIndirectExecutionSetEXT_T = Cvoid -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} -end +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) -end +const VkIndirectCommandsLayoutEXT_T = Cvoid -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 -end +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags -struct VkMicromapVersionInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkCopyMicromapToMemoryInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -struct VkCopyMemoryToMicromapInfoEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkCopyMicromapInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkMicromapBuildSizesInfoEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT -end - -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectCommandsLayoutCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkGeneratedCommandsPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + index::UInt32 + shader::VkShaderEXT end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkDescriptorSetBindingReferenceVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA sType::VkStructureType pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 + imageAlignmentControl::VkBool32 end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA sType::VkStructureType pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 + supportedImageAlignmentMask::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM +struct VkImageAlignmentControlCreateInfoMESA sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 + maximumRequestedAlignment::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM +struct VkPhysicalDeviceDepthClampControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D + depthClampControl::VkBool32 end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM +struct VkPipelineViewportDepthClampControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} -end - -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize -end - -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - indirectCopy::VkBool32 + hdrVivid::VkBool32 end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV +struct VkHdrVividDynamicMetadataHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 - -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 - -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineOpacityMicromap::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeRobustness::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + fragmentDensityMapLayered::VkBool32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + maxFragmentDensityMapLayers::UInt32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + presentMetering::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end + +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] +end + +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] +end + +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = 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_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = 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_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkRenderPassCreationControlEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - disallowMerging::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_display = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV_T = Cvoid - -const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 1 +const VK_KHR_external_fence_fd = 1 -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20695,13 +32616,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20773,7 +32694,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20879,7 +32800,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20897,16 +32818,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21149,7 +33076,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21273,7 +33200,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21343,6 +33270,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21387,10 +33326,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21451,6 +33396,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21495,7 +33452,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21525,7 +33482,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21577,9 +33534,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21601,6 +33564,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21631,7 +33600,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21651,6 +33620,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21665,7 +33640,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21681,6 +33656,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21699,9 +33694,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21717,6 +33718,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21741,6 +33754,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21759,6 +33784,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21781,7 +33812,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21791,6 +33822,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21815,12 +33858,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21833,6 +33900,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/aarch64-linux-musl.jl b/lib/aarch64-linux-musl.jl index 56081ed..d2d4b92 100644 --- a/lib/aarch64-linux-musl.jl +++ b/lib/aarch64-linux-musl.jl @@ -151,6 +151,7 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -165,21 +166,26 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -400,6 +406,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -450,8 +506,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -459,10 +544,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -474,9 +555,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -491,7 +569,6 @@ end 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 @@ -504,6 +581,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -512,6 +590,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -547,6 +626,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -612,7 +693,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -620,15 +700,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -636,6 +710,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -651,14 +727,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -683,11 +762,7 @@ end 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 @@ -695,16 +770,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -718,11 +787,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -732,8 +802,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -746,8 +834,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -783,8 +869,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -825,6 +909,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -839,6 +925,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -851,26 +939,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -879,6 +985,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -892,19 +1022,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -913,7 +1273,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -934,6 +1293,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -947,6 +1309,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -986,6 +1349,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -1005,11 +1369,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1024,6 +1395,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1037,11 +1411,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1067,10 +1468,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1078,6 +1482,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1104,6 +1539,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1111,10 +1547,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1172,7 +1615,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1180,12 +1631,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1443,6 +1896,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1451,7 +1906,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1506,6 +1976,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1543,6 +2016,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1695,20 +2169,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1719,6 +2195,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1739,6 +2216,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1754,6 +2234,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1877,7 +2358,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1887,7 +2370,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1906,6 +2391,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1919,15 +2405,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1959,11 +2449,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2022,6 +2514,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2057,13 +2551,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2091,16 +2587,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2116,6 +2621,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,7 +2650,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2184,20 +2692,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2253,6 +2767,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2273,6 +2792,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2299,11 +2819,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2327,6 +2850,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2351,8 +2875,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2361,6 +2885,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2372,15 +2898,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2492,6 +3019,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,10 +3032,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2526,6 +3058,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2543,6 +3077,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2553,6 +3088,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3686,6 +4222,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3727,6 +4271,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3741,9 +4293,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5348,6 +5933,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5362,7 +5948,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5386,6 +5976,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5412,6 +6003,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6326,6 +6921,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6355,6 +6952,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6375,11 +6973,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7166,9 +7766,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7573,16 +8176,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8116,967 +8759,1718 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 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 +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkMemoryUnmapFlags = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR_T = Cvoid +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR_T = Cvoid +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end +const VkSurfaceKHR_T = Cvoid -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags +@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 -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} -end +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) -end +const VkSwapchainKHR_T = Cvoid -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +# 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 vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -const VkVideoDecodeUsageFlagsKHR = VkFlags +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end -const VkVideoDecodeFlagsKHR = VkFlags +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 -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, 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 vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, 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 vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end + +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end + +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 +end + +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR +end + +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +end + +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end + +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties +end + +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end + +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end + +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView +end + +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +end + +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements +end + +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end + +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end + +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end + +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end + +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end + +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, 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 vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, 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 vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, 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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, 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 vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, 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 vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeUsageFlagsKHR = VkFlags + +const VkVideoDecodeFlagsKHR = VkFlags + +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR +end + +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR +end + +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264AspectRatioIdc::UInt32 begin 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 @@ -9099,11533 +10493,22060 @@ end STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end + +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] +end + +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] +end + +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end + +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end + +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end + +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end + +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end + +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end + +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 +end + +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end + +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end + +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end + +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 +end + +struct VkVideoEncodeH264SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc +end + +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} +end + +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 +end + +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} +end + +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc +end + +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR +end + +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +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 + +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] +end + +struct StdVideoH265HrdParameters + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] +end + +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] +end + +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] +end + +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end + +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +# 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 -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +@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 -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +# 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 -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +@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 StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +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 -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +# 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 -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +# 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 -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat end -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) end -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} +# 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 -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +@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 VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end -struct VkVideoDecodeH264ProfileInfoKHR +struct VkDisplayPowerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + powerState::VkDisplayPowerStateEXT end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkDeviceEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + deviceEvent::VkDeviceEventTypeEXT end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkDisplayEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + displayEvent::VkDisplayEventTypeEXT end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkSwapchainCounterCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + surfaceCounters::VkSurfaceCounterFlagsEXT end -struct VkVideoDecodeH264PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} +# 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 -struct VkVideoDecodeH264DpbSlotInfoKHR +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +struct VkMultiviewPerViewAttributesInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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 VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkPipelineViewportSwizzleStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} end -struct VkAttachmentSampleCountInfoAMD +@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} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + maxDiscardRectangles::UInt32 end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX +struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo - -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures - -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkFormatProperties2KHR = VkFormatProperties2 +@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 VkImageFormatProperties2KHR = VkImageFormatProperties2 +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 +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 VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +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_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +const VkDebugUtilsMessengerEXT_T = Cvoid -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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 -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +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 -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# 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 vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) 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) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits +const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end -struct VkImportMemoryFdInfoKHR +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkMemoryFdPropertiesKHR +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 end -struct VkMemoryGetFdInfoKHR +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + maxSampleLocationGridSize::VkExtent2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags - -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits - -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags +@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 -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end -const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) -const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@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 VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD -struct VkImportSemaphoreFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 end -struct VkSemaphoreGetFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits + shaderSMBuiltins::VkBool32 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) +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} end -struct VkPhysicalDevicePushDescriptorPropertiesKHR +struct VkImageDrmFormatModifierExplicitCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} 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) +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +# 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 VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +const VkValidationCacheEXT_T = Cvoid -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end +const VkValidationCacheCreateFlagsEXT = VkFlags -struct VkPresentRegionsKHR +struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate - -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType - -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags - -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -# 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_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) 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 +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} end -struct VkSharedPresentSurfaceCapabilitiesKHR +struct VkPhysicalDeviceShadingRateImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -const VkExternalFencePropertiesKHR = VkExternalFenceProperties +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -const VkFenceImportFlagsKHR = VkFenceImportFlags +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits +const VkAccelerationStructureNV_T = Cvoid -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint +@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 VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +const VkGeometryTypeNV = VkGeometryTypeKHR -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + 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 end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@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 -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR -@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 +@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 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 +@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 -@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 +const VkGeometryFlagsKHR = VkFlags -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 -end +const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkAcquireProfilingLockFlagsKHR = VkFlags +const VkGeometryInstanceFlagsKHR = VkFlags -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 end -struct VkPerformanceCounterKHR +struct VkRayTracingPipelineCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 end -struct VkPerformanceCounterDescriptionKHR +struct VkGeometryTrianglesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkGeometryAABBNV sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV 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) +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR 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) +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} end -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} +struct VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} end -struct VkAcquireProfilingLockInfoKHR +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV end -struct VkPerformanceQuerySubmitInfoKHR +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::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} +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +const VkTransformMatrixNV = VkTransformMatrixKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +const VkAabbPositionsNV = VkAabbPositionsKHR -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +# 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} -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +# 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} -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +# 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} -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) 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) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +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 -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) end -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) 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) +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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) 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) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo - -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion - -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion - -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange - -const VkChromaLocationKHR = VkChromaLocation - -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo - -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +# 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 -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD end -const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties +const VkTimeDomainEXT = VkTimeDomainKHR -const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) -const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) 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} +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end -# 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 vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +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) +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 -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +@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 -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) +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures -struct VkPhysicalDeviceShaderClockFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 -end +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 end -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +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 StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 end -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -struct StdVideoH265HrdFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) - return getfield(x, f) +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +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 StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct StdVideoH265VpsFlags - data::NTuple{4, UInt8} +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag - ref[] +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -struct StdVideoH265ProfileTierLevelFlags - data::NTuple{4, UInt8} +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) - return getfield(x, f) +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag - ref[] +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 end -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +# 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) 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} +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) - return getfield(x, f) +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag - ref[] +@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 -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +@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 -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +@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 StdVideoH265SpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +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::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end ref[] end -struct StdVideoH265ShortTermRefPicSetFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 end -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +# 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 -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkVideoDecodeH265PictureInfoKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} + localDimmingSupport::VkBool32 end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} + localDimmingEnable::VkBool32 end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +# 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + fragmentDensityMapAttachment::VkAttachmentReference end -const VkDriverIdKHR = VkDriverId +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end -const VkConformanceVersionKHR = VkConformanceVersion +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkShaderCorePropertiesFlagsAMD = VkFlags -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end -const VkSemaphoreTypeKHR = VkSemaphoreType +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 +end -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +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 -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +const VkComponentTypeNV = VkComponentTypeKHR -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +const VkScopeNV = VkScopeKHR -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkFragmentShadingRateAttachmentInfoKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + cooperativeMatrixSupportedStages::VkShaderStageFlags end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +# 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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + coverageReductionMode::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPipelineCoverageReductionStateCreateInfoNV 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 + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceProvokingVertexFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +end -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkHeadlessSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + flags::VkHeadlessSurfaceCreateFlagsEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkLineRasterizationModeEXT = VkLineRasterizationMode -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +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 -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +# 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 -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} +# 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 VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +# 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 vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) 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 +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 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutableInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} +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 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} -end +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -struct VkPresentIdKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} -end +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -struct VkPhysicalDevicePresentIdFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentId::VkBool32 -end +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +const VkImageSubresource2EXT = VkImageSubresource2 -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkAccessFlags2KHR = VkAccessFlags2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -const VkSubmitFlagsKHR = VkSubmitFlags +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minPlacedMemoryMapAlignment::VkDeviceSize +end -struct VkQueueFamilyCheckpointProperties2NV +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + pPlacedAddress::Ptr{Cvoid} end -struct VkCheckpointData2NV +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkIndirectCommandsLayoutNV_T = Cvoid -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) -end +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end +const VkIndirectStateFlagsNV = VkFlags -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +@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 -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + deviceGeneratedCommands::VkBool32 end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkGraphicsShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkGraphicsPipelineShaderGroupsCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end -const VkBufferCopy2KHR = VkBufferCopy2 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end -const VkImageCopy2KHR = VkImageCopy2 +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 VkImageBlit2KHR = VkImageBlit2 +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +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 VkImageResolve2KHR = VkImageResolve2 +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = 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_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = 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_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 - -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 - -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties - -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements - -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} - -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -const VkDebugReportCallbackEXT_T = Cvoid +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 +end -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} +const VkDeviceMemoryReportFlagsEXT = VkFlags -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMemoryReport::VkBool32 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 +struct VkDeviceMemoryReportCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 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} +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} -struct VkDebugReportCallbackCreateInfoEXT +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT 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 VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -# 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} +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -struct VkDebugMarkerObjectNameInfoEXT +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + presentBarrier::VkBool32 end -struct VkDebugMarkerObjectTagInfoEXT +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + presentBarrierSupported::VkBool32 end -struct VkDebugMarkerMarkerInfoEXT +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + presentBarrierEnable::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkDedicatedAllocationImageCreateInfoNV +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + diagnosticsConfig::VkBool32 end -struct VkDedicatedAllocationBufferCreateInfoNV +struct VkDeviceDiagnosticsConfigCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + flags::VkDeviceDiagnosticsConfigFlagsNV end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags +const VkTileShadingRenderPassFlagsQCOM = VkFlags -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDeviceTileShadingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkPhysicalDeviceTileShadingPropertiesQCOM 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 + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D 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) +struct VkPerTileBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) 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) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -const VkCuModuleNVX_T = Cvoid +const VkAccelerationStructureKHR_T = Cvoid -const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} -const VkCuFunctionNVX_T = Cvoid +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize +end -const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -struct VkCuFunctionCreateInfoNVX +struct VkDescriptorAddressInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -struct VkCuLaunchInfoNVX +struct VkDescriptorBufferBindingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} + +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkImageViewHandleInfoNVX +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} imageView::VkImageView - descriptorType::VkDescriptorType +end + +struct VkSamplerCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} sampler::VkSampler end -struct VkImageViewAddressPropertiesNVX +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + opaqueCaptureDescriptorData::Ptr{Cvoid} end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -# 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_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) 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) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) 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 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +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) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) 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 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -const VkExternalMemoryHandleTypeFlagsNV = VkFlags +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -@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 +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -const VkExternalMemoryFeatureFlagsNV = VkFlags +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) 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 vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + graphicsPipelineLibrary::VkBool32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT +struct VkGraphicsPipelineLibraryCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 + flags::VkGraphicsPipelineLibraryFlagsEXT end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT + shaderEarlyAndLateFragmentTests::VkBool32 end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} 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) +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} 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 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -struct VkDisplayEventInfoEXT +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) 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) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 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 +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcr2plane444Formats::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + transform::VkSurfaceTransformFlagBitsKHR end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end +const VkImageCompressionFlagsEXT = VkFlags -@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 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + imageCompressionControl::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkImageCompressionControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +struct VkImageCompressionPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + attachmentFeedbackLoopLayout::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkHdrMetadataEXT +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceFaultFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize +end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -const VkDebugUtilsMessengerEXT_T = Cvoid +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} +end -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 +end -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} -@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 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +end + +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + mutableDescriptorType::VkBool32 end -struct VkDebugUtilsMessengerCallbackDataEXT +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} +end + +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT + +struct VkMutableDescriptorTypeCreateInfoEXT 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} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkVertexInputBindingDescription2EXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 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} +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +struct VkPhysicalDeviceDrmPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +const VkDeviceAddressBindingFlagsEXT = VkFlags -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + reportAddressBinding::VkBool32 end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +struct VkSubpassShadingPipelineCreateInfoHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassShading::VkBool32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end +const VkRemoteAddressNV = Ptr{Cvoid} -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkMemoryGetRemoteAddressInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryRDMA::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +end -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +const VkPipelineInfoEXT = VkPipelineInfoKHR -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkSampleLocationsInfoEXT +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} -end - -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + frameBoundary::VkBool32 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkFrameBoundaryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + multisampledRenderToSingleSampled::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + optimal::VkBool32 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -struct VkMultisamplePropertiesEXT +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} + +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) 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 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +end -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) 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 +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + colorWriteEnable::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPipelineColorWriteCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesListEXT +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + minLod::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + minLod::Cfloat end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkPhysicalDeviceMultiDrawFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + multiDraw::VkBool32 end -struct VkImageDrmFormatModifierPropertiesEXT +struct VkPhysicalDeviceMultiDrawPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 + maxMultiDrawCount::UInt32 end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} + +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -const VkValidationCacheEXT_T = Cvoid +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImageFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT_T = Cvoid -# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT = Ptr{VkMicromapEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -@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 +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) 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 +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} + pVersionData::Ptr{UInt8} 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) +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} end -const VkAccelerationStructureNV_T = Cvoid - -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkGeometryTypeKHR::UInt32 begin - 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 +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -const VkGeometryTypeNV = VkGeometryTypeKHR +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -@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 +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -const VkGeometryFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagsNV = VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} + +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -const VkAabbPositionsNV = VkAabbPositionsKHR +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterShadingRate::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkSamplerBorderColorComponentMappingCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + components::VkComponentMapping + srgb::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pageableDeviceLocalMemory::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) 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) +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 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) +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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) +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 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) +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 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) +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) 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 +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkRenderPassStripeInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + stripeArea::VkRect2D end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkRenderPassStripeBeginInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT +struct VkRenderPassStripeSubmitInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageViewType::VkImageViewType + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -struct VkFilterCubicImageViewImageFormatPropertiesEXT +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 + fragmentDensityMapOffset::VkBool32 end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -struct VkImportMemoryHostPointerInfoEXT +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} end -struct VkMemoryHostPointerPropertiesEXT +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT + +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize +end + +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + indirectCopy::VkBool32 end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + supportedQueues::VkQueueFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = 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_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV 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 +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 end -struct VkCalibratedTimestampInfoEXT +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) 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) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV 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 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV 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 + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + imageCompressionControlSwapchain::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::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) +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + maxCommandBufferNestingLevel::UInt32 end -struct VkCheckpointDataNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + acquireUnmodifiedMemory::VkBool32 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) +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) 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) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +end -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) end -const VkShaderCorePropertiesFlagsAMD = VkFlags +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +end -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +end -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +end -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +end -@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 +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 end -struct VkValidationFeaturesEXT +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + disallowMerging::VkBool32 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 +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 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 +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -struct VkCooperativeMatrixPropertiesNV +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end + +struct VkRenderPassSubpassFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +end + +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} +const VkTensorARM_T = Cvoid -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorARM = Ptr{VkTensorARM_T} -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorViewARM_T = Cvoid -@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 +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +const VkTensorCreateFlagsARM = VkFlags64 -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 + +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkFramebufferMixedSamplesCombinationNV +struct VkTensorViewCreateInfoARM 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 - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 + tensor::VkTensorARM end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +struct VkWriteDescriptorSetTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT +struct VkTensorMemoryBarrierARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT +struct VkTensorDependencyInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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) +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} 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 +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT +struct VkCopyTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 + tensor::VkTensorARM end -struct VkPipelineRasterizationLineStateCreateInfoEXT +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits 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) +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM 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 + descriptorBufferTensorDescriptors::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} +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkTensorCaptureDescriptorDataInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + tensorView::VkTensorViewARM end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = 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_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = 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_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = 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 VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = 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 vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 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) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -const VkPresentScalingFlagsEXT = VkFlags +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) end -const VkPresentGravityFlagsEXT = VkFlags +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -struct VkSurfacePresentModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR +const VkOpticalFlowSessionNV_T = Cvoid + +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} + +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentScalingCapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentModeCompatibilityEXT +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + opticalFlow::VkBool32 end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkPhysicalDeviceOpticalFlowPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -struct VkSwapchainPresentFenceInfoEXT +struct VkOpticalFlowImageFormatInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + usage::VkOpticalFlowUsageFlagsNV end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + format::VkFormat end -struct VkSwapchainPresentModeInfoEXT +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkOpticalFlowSessionCreatePrivateDataInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -struct VkReleaseSwapchainImagesInfoEXT +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV_T = Cvoid +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyDithering::VkBool32 end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 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} +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + antiLag::VkBool32 end -struct VkGeneratedCommandsInfoNV +struct VkAntiLagPresentationInfoAMD 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 + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkAntiLagDataAMD 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 vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, 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 vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +const VkShaderEXT_T = Cvoid + +const VkShaderEXT = Ptr{VkShaderEXT_T} + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 + shaderObject::VkBool32 end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -struct VkRenderPassTransformBeginInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkDeviceMemoryReportFlagsEXT = VkFlags +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -struct VkDeviceMemoryReportCallbackDataEXT +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + tileProperties::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + amigoProfiling::VkBool32 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkAmigoProfilingSubmitInfoSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + multiviewPerViewViewports::VkBool32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + rayTracingInvocationReorder::VkBool32 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkPhysicalDeviceCooperativeVectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -const VkPrivateDataSlotEXT = VkPrivateDataSlot - -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags - -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures - -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo - -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) +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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + extendedSparseAddressSpace::VkBool32 end -const VkAccelerationStructureKHR_T = Cvoid - -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + legacyVertexAttributes::VkBool32 end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + nativeUnalignedPerformance::VkBool32 end -struct VkDescriptorAddressInfoEXT +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end + +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDescriptorBufferBindingInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + shaderCoreBuiltins::VkBool32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkDescriptorGetInfoEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + presentID::UInt64 end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + queueType::VkOutOfBandQueueTypeNV end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkDataGraphPipelineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkDataGraphPipelinePropertyQueryResultARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + flags::VkDataGraphPipelineDispatchFlagsARM end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM +end + +struct VkDataGraphProcessingEngineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureMotionInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + multiviewPerViewRenderAreas::VkBool32 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 +end + +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkBlitImageCubicWeightsInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + cubicRangeClamp::VkBool32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + tileMemoryHeap::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -struct VkImageSubresource2EXT +struct VkTileMemoryRequirementsQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + size::VkDeviceSize + alignment::VkDeviceSize end -struct VkImageCompressionPropertiesEXT +struct VkTileMemoryBindInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + memory::VkDeviceMemory end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} + +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + hdmi3DSupported::VkBool32 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRawAccessChainsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRawAccessChains::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 -end +const VkExternalComputeQueueNV_T = Cvoid -struct VkPhysicalDeviceFaultFeaturesEXT +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + reservedExternalQueues::UInt32 end -struct VkDeviceFaultCountsEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize -end - -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize + preferredQueue::VkQueue end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkExternalComputeQueueDataParamsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndex::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 -end - -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} + shaderFloat16VectorAtomics::VkBool32 end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT - -struct VkMutableDescriptorTypeCreateInfoEXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + shaderReplicatedComposites::VkBool32 end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + rayTracingValidation::VkBool32 end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkDeviceAddressBindingFlagsEXT = VkFlags +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} - -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} - -struct VkMemoryGetRemoteAddressInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPipelineInfoEXT = VkPipelineInfoKHR +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkSubpassResolvePerformanceQueryEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - optimal::VkBool32 +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkMultisampledRenderToSingleSampledInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPipelineColorWriteCreateInfoEXT +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} + allowClusterAccelerationStructure::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkImageViewMinLodCreateInfoEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 -end - -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 -end - -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 + enablePartitionTranslation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 -end - -const VkMicromapEXT_T = Cvoid - -const VkMicromapEXT = Ptr{VkMicromapEXT_T} - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkPartitionedAccelerationStructureInstancesInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkBuildPartitionedAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkBuildMicromapFlagsEXT = VkFlags - -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkMicromapCreateFlagsEXT = VkFlags - -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 -end +const VkIndirectExecutionSetEXT_T = Cvoid -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} -end +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) -end +const VkIndirectCommandsLayoutEXT_T = Cvoid -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 -end +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags -struct VkMicromapVersionInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkCopyMicromapToMemoryInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -struct VkCopyMemoryToMicromapInfoEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkCopyMicromapInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkMicromapBuildSizesInfoEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT -end - -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectCommandsLayoutCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkGeneratedCommandsPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + index::UInt32 + shader::VkShaderEXT end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkDescriptorSetBindingReferenceVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA sType::VkStructureType pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 + imageAlignmentControl::VkBool32 end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA sType::VkStructureType pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 + supportedImageAlignmentMask::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM +struct VkImageAlignmentControlCreateInfoMESA sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 + maximumRequestedAlignment::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM +struct VkPhysicalDeviceDepthClampControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D + depthClampControl::VkBool32 end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM +struct VkPipelineViewportDepthClampControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} -end - -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize -end - -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - indirectCopy::VkBool32 + hdrVivid::VkBool32 end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV +struct VkHdrVividDynamicMetadataHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 - -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 - -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineOpacityMicromap::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeRobustness::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + fragmentDensityMapLayered::VkBool32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + maxFragmentDensityMapLayers::UInt32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + presentMetering::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end + +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] +end + +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] +end + +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = 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_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = 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_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkRenderPassCreationControlEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - disallowMerging::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_display = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV_T = Cvoid - -const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 1 +const VK_KHR_external_fence_fd = 1 -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20695,13 +32616,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20773,7 +32694,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20879,7 +32800,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20897,16 +32818,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21149,7 +33076,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21273,7 +33200,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21343,6 +33270,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21387,10 +33326,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21451,6 +33396,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21495,7 +33452,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21525,7 +33482,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21577,9 +33534,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21601,6 +33564,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21631,7 +33600,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21651,6 +33620,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21665,7 +33640,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21681,6 +33656,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21699,9 +33694,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21717,6 +33718,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21741,6 +33754,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21759,6 +33784,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21781,7 +33812,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21791,6 +33822,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21815,12 +33858,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21833,6 +33900,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/armv7l-linux-gnueabihf.jl b/lib/armv7l-linux-gnueabihf.jl index a9af2a7..162dbce 100644 --- a/lib/armv7l-linux-gnueabihf.jl +++ b/lib/armv7l-linux-gnueabihf.jl @@ -111,6 +111,7 @@ const VkCommandPool = UInt64 VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -125,21 +126,26 @@ const VkCommandPool = UInt64 VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -360,6 +366,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -410,8 +466,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -419,10 +504,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -434,9 +515,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -451,7 +529,6 @@ end 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 @@ -464,6 +541,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -472,6 +550,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -507,6 +586,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -572,7 +653,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -580,15 +660,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -596,6 +670,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -611,14 +687,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -643,11 +722,7 @@ end 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 @@ -655,16 +730,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -678,11 +747,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -692,8 +762,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -706,8 +794,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -743,8 +829,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -785,6 +869,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -799,6 +885,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -811,26 +899,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -839,6 +945,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -852,19 +982,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -873,7 +1233,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -894,6 +1253,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -907,6 +1269,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -946,6 +1309,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -965,11 +1329,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -984,6 +1355,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -997,11 +1371,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1027,10 +1428,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1038,6 +1442,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1064,6 +1499,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1071,10 +1507,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1132,7 +1575,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1140,12 +1591,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1403,6 +1856,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1411,7 +1866,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1466,6 +1936,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1503,6 +1976,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1655,20 +2129,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1679,6 +2155,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1699,6 +2176,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1714,6 +2194,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1837,7 +2318,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1847,7 +2330,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1866,6 +2351,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1879,15 +2365,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1919,11 +2409,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -1982,6 +2474,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2017,13 +2511,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2051,16 +2547,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2076,6 +2581,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2104,7 +2610,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,20 +2652,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2213,6 +2727,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2233,6 +2752,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2259,11 +2779,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2287,6 +2810,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2311,8 +2835,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2321,6 +2845,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2332,15 +2858,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2452,6 +2979,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2463,10 +2992,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2486,6 +3018,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,6 +3037,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2513,6 +3048,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3646,6 +4182,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3687,6 +4231,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3701,9 +4253,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5304,6 +5889,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5318,7 +5904,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5342,6 +5932,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5368,6 +5959,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6282,6 +6877,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6311,6 +6908,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6331,11 +6929,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7120,9 +7720,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7527,16 +8130,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :imageView && return Ptr{VkImageView}(x + 8) + f === :imageLayout && return Ptr{VkImageLayout}(x + 16) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 20) + f === :resolveImageView && return Ptr{VkImageView}(x + 24) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 32) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 36) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 40) + f === :clearValue && return Ptr{VkClearValue}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8070,2723 +8713,3020 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 2147483647 end -const VkCompositeAlphaFlagsKHR = VkFlags +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 +end -const VkSurfaceTransformFlagsKHR = VkFlags +const VkMemoryUnmapFlags = VkFlags -struct VkSurfaceCapabilitiesKHR - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags -end +const VkPipelineCreateFlags2 = VkFlags64 -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkHostImageCopyFlags = VkFlags -# 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) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR = UInt64 - -const VkDisplayModeKHR = UInt64 +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR = UInt64 +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionParametersKHR = UInt64 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} -end - -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties -end - -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags -end - -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags -end - -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end - -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceKHR = UInt64 -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +@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 -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} +@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 -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR +@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 -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = UInt64 -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) -end +const VkDeviceGroupPresentModeFlagsKHR = VkFlags -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +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 -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} -const VkVideoDecodeUsageFlagsKHR = VkFlags +# 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} -const VkVideoDecodeFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +# 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 -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin - 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 - STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +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 -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR end -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 end -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 end -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +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 Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) -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 Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) end -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] -end +const VkVideoSessionKHR = UInt64 -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} -end +const VkVideoSessionParametersKHR = UInt64 -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 end -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +const VkVideoSessionParametersCreateFlagsKHR = VkFlags -struct VkVideoDecodeH264ProfileInfoKHR +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + queryResultStatusSupport::VkBool32 end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkQueueFamilyVideoPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + videoCodecOperations::VkVideoCodecOperationFlagsKHR end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkVideoProfileInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkVideoProfileListInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} end -struct VkVideoDecodeH264PictureInfoKHR +struct VkVideoCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties end -struct VkVideoDecodeH264DpbSlotInfoKHR +struct VkPhysicalDeviceVideoFormatInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + imageUsage::VkImageUsageFlags end -const VkRenderingFlagsKHR = VkRenderingFlags - -const VkRenderingFlagBitsKHR = VkRenderingFlagBits - -const VkRenderingInfoKHR = VkRenderingInfo - -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo - -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo - -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures - -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo - -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +struct VkVideoFormatPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags end -struct VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkVideoPictureResourceInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView end -struct VkAttachmentSampleCountInfoAMD +struct VkVideoReferenceSlotInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX +struct VkVideoSessionMemoryRequirementsKHR sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} -const VkFormatProperties2KHR = VkFormatProperties2 - -const VkImageFormatProperties2KHR = VkImageFormatProperties2 - -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 - -const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 - -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 - -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 - -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = 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_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = 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_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) + ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) + ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) + ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) 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) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) + ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) + ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) 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) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) 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) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) 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) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) 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) +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end +const VkVideoDecodeCapabilityFlagsKHR = VkFlags -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +const VkVideoDecodeUsageFlagsKHR = VkFlags -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +const VkVideoDecodeFlagsKHR = VkFlags -struct VkImportMemoryFdInfoKHR +struct VkVideoDecodeCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + flags::VkVideoDecodeCapabilityFlagsKHR end -struct VkMemoryFdPropertiesKHR +struct VkVideoDecodeUsageInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + videoUsageHints::VkVideoDecodeUsageFlagsKHR end -struct VkMemoryGetFdInfoKHR +struct VkVideoDecodeInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 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) +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 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 +@cenum StdVideoH264AspectRatioIdc::UInt32 begin + 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 + STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -struct VkSemaphoreGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 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} +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 end -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 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} +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +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) +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features - -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features - -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures - -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 VkPresentRegionsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} +struct StdVideoH264SequenceParameterSetVui + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) 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) +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) 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) +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +struct StdVideoH264SequenceParameterSet + data::NTuple{76, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 68) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 72) + return getfield(x, f) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags - -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end -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 - -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end 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 +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +struct StdVideoH264PictureParameterSet + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) 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 +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] 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 +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 end -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} end -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} end -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPerformanceCounterKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPerformanceCounterDescriptionKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkQueryPoolPerformanceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, 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) +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) return getfield(x, f) end -function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) - r = Ref{VkPerformanceCounterResultKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} - -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved ref[] end -struct VkAcquireProfilingLockInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} end -struct VkPerformanceQuerySubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - counterPassIndex::UInt32 +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) -const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +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) +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 end -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +struct StdVideoEncodeH264ReferenceListsInfo + data::NTuple{92, UInt8} +end -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 84) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 88) + return getfield(x, f) +end -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +struct StdVideoEncodeH264PictureInfo + data::NTuple{28, UInt8} +end -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +struct StdVideoEncodeH264SliceHeader + data::NTuple{28, UInt8} end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) end -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkDisplayPlaneInfo2KHR +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 end -struct VkDisplayPlaneCapabilities2KHR +struct VkVideoEncodeH264SessionCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, 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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} 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) +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} 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) +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 end -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} 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) +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc end -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 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) +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 end -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures - -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features - -struct VkPhysicalDeviceShaderClockFeaturesKHR +struct VkVideoEncodeH264GopRemainingFrameInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 end @cenum StdVideoH265ChromaFormatIdc::UInt32 begin @@ -10938,6 +11878,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) ref = Ref{StdVideoH265HrdFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) @@ -10952,21 +11900,66 @@ function StdVideoH265HrdFlags(nal_hrd_parameters_present_flag::UInt32, vcl_hrd_p end struct StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] end struct StdVideoH265VpsFlags @@ -11024,6 +12017,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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) ref = Ref{StdVideoH265VpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) @@ -11090,6 +12091,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, end end +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) ref = Ref{StdVideoH265ProfileTierLevelFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) @@ -11102,44 +12111,119 @@ function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_pr end struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc + data::NTuple{12, UInt8} end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) 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} +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 28) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) @@ -11200,6 +12284,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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) ref = Ref{StdVideoH265SpsVuiFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) @@ -11225,32 +12317,88 @@ function StdVideoH265SpsVuiFlags(aspect_ratio_info_present_flag::UInt32, oversca end struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} + data::NTuple{52, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] end struct StdVideoH265PredictorPaletteEntries @@ -11338,6 +12486,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) ref = Ref{StdVideoH265SpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) @@ -11427,6 +12583,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbo end end +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) @@ -11436,20 +12600,64 @@ function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag:: end struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] end struct StdVideoH265LongTermRefPicsSps @@ -11458,45 +12666,114 @@ struct StdVideoH265LongTermRefPicsSps end struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} + data::NTuple{84, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 60) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 64) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 68) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 76) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] end struct StdVideoH265PpsFlags @@ -11581,6 +12858,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) ref = Ref{StdVideoH265PpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) @@ -11618,8932 +12903,19554 @@ function StdVideoH265PpsFlags(dependent_slice_segments_enabled_flag::UInt32, out ref[] end -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +struct StdVideoH265PictureParameterSet + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 132) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{28, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 28) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR = UInt64 + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{536, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 8) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 264) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 520) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 528) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR = UInt64 + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 20) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 24) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 76) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 80) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 84) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 88) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 92) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 96) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 100) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{116, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 84) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 92) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 96) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 100) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 104) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 108) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 112) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{44, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 36) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX = UInt64 + +const VkCuFunctionNVX = UInt64 + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, 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 + +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 + +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + 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 + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +struct VkMultiviewPerViewAttributesInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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 + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + 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 vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, 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 vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, 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 vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, 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 vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end + +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures + +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties + +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock + +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo + +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 vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, 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 + +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD + +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 + +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +end + +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +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 + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, 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 vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, 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 vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, 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 vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, 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 vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, 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 vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, 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 vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, 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 vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureNV = UInt64 + +@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 = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + 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_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 +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 VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 +end + +@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_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + 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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + 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 VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} +end + +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), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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 , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * 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 vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, 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 vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, 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 vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, 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 vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, 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 vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, 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 vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, 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 + +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo + +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 + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, 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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, 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 + +const VkTimeDomainEXT = VkTimeDomainKHR + +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, 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 + +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures + +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits + +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags + +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo + +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback + +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + +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 vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +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_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, 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 + +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 +end + +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, 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 vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), 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 + +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end + ref[] +end + +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data + ref[] +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 vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, 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 vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, 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 + +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures + +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties + +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo + +@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 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::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 + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags + +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +end + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), 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_SHADER_VALIDATION_CACHE_EXT = 7 + 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 + +const VkComponentTypeNV = VkComponentTypeKHR + +const VkScopeNV = VkScopeKHR + +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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, 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 + +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end + +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +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 + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkLineRasterizationModeEXT = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo + +# 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 + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, 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 + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +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} -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +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 StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkVideoDecodeH265PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -struct VkVideoDecodeH265DpbSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkQueueFamilyGlobalPriorityPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -const VkDriverIdKHR = VkDriverId +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 -const VkConformanceVersionKHR = VkConformanceVersion +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -const VkSemaphoreTypeKHR = VkSemaphoreType +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkImageSubresource2EXT = VkImageSubresource2 -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = 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_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + minPlacedMemoryMapAlignment::VkDeviceSize end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkMemoryMapPlacedInfoEXT 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 + pPlacedAddress::Ptr{Cvoid} end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -struct VkSurfaceProtectedCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsProtected::VkBool32 -end +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -struct VkPhysicalDevicePresentWaitFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentWait::VkBool32 +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR + +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR + +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} + +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures + +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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkIndirectStateFlagsNV = VkFlags -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +@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 VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +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 VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +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 -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +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 -const VkDeferredOperationKHR = UInt64 +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = 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_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) 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 +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPipelineInfoKHR +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline + inheritedViewportScissor2D::VkBool32 end -struct VkPipelineExecutablePropertiesKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkPipelineExecutableInfoKHR +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 -end - -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} + texelBufferAlignment::VkBool32 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 +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -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) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR end -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} - -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineExecutableStatisticKHR +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -struct VkPipelineExecutableInternalRepresentationKHR +struct VkDepthBiasInfoEXT 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) + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 end -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures - -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +const VkDeviceMemoryReportFlagsEXT = VkFlags -struct VkPipelineLibraryCreateInfoKHR +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} + deviceMemoryReport::VkBool32 end -struct VkPresentIdKHR +struct VkDeviceMemoryReportCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 end -struct VkPhysicalDevicePresentIdFeaturesKHR +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} + +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentId::VkBool32 + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} end -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} -const VkAccessFlags2KHR = VkAccessFlags2 +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -const VkSubmitFlagsKHR = VkSubmitFlags +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{28, UInt8} +end + +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 8) + f === :format && return Ptr{VkFormat}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkDependencyInfoKHR = VkDependencyInfo +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +struct VkPhysicalDevicePresentBarrierFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentBarrier::VkBool32 +end -struct VkQueueFamilyCheckpointProperties2NV +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + presentBarrierSupported::VkBool32 end -struct VkCheckpointData2NV +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + presentBarrierEnable::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) -end +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end +const VkTileShadingRenderPassFlagsQCOM = VkFlags -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceTileShadingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceTileShadingPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkPerTileBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 - -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 - -const VkBlitImageInfo2KHR = VkBlitImageInfo2 - -const VkResolveImageInfo2KHR = VkResolveImageInfo2 - -const VkBufferCopy2KHR = VkBufferCopy2 - -const VkImageCopy2KHR = VkImageCopy2 - -const VkImageBlit2KHR = VkImageBlit2 - -const VkBufferImageCopy2KHR = VkBufferImageCopy2 - -const VkImageResolve2KHR = VkImageResolve2 - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} - -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +const VkAccelerationStructureKHR = UInt64 + +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 - -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 - -const VkFormatProperties3KHR = VkFormatProperties3 - -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + combinedImageSamplerDensityMapDescriptorSize::Csize_t end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} - -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkDescriptorAddressInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkDescriptorBufferBindingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties - -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements - -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} - -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) 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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 -end +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} -@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 +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] 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} +struct VkDescriptorGetInfoEXT + data::NTuple{24, UInt8} 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) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkDescriptorType}(x + 8) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 16) + return getfield(x, f) end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + imageView::VkImageView end -struct VkDebugMarkerObjectNameInfoEXT +struct VkSamplerCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + sampler::VkSampler end -struct VkDebugMarkerObjectTagInfoEXT +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + opaqueCaptureDescriptorData::Ptr{Cvoid} end -struct VkDebugMarkerMarkerInfoEXT +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkDedicatedAllocationBufferCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPipelineRasterizationStateStreamCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) 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} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end -# 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} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end -# 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} +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# 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 vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags + +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibrary::VkBool32 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT 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) +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -const VkCuModuleNVX = UInt64 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 +end -const VkCuFunctionNVX = UInt64 +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCuFunctionCreateInfoNVX +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} + +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkCuLaunchInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} + +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{16, UInt8} end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + return getfield(x, f) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -struct VkImageViewHandleInfoNVX +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -struct VkImageViewAddressPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat 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} +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} +end -# 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 Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) +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) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) 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 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) 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 +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} 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 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) 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 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkExternalMemoryFeatureFlagsNV = VkFlags - -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -struct VkExternalMemoryImageCreateInfoNV +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 end -struct VkExportMemoryAllocateInfoNV +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT 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 + ycbcr2plane444Formats::VkBool32 end -struct VkValidationFlagsEXT +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} + fragmentDensityMapDeferred::VkBool32 end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures - -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + transform::VkSurfaceTransformFlagBitsKHR end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 -end +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT -end +const VkImageCompressionFlagsEXT = VkFlags -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT -end +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + imageCompressionControl::VkBool32 end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkImageCompressionControlEXT 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -struct VkPipelineViewportWScalingStateCreateInfoNV +struct VkImageCompressionPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT 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) +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopLayout::VkBool32 end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 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) +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceFaultFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -const VkSurfaceCounterFlagsEXT = VkFlags - -struct VkSurfaceCapabilities2EXT +struct VkDeviceFaultCountsEXT 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 + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize 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) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 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 +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} + +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkDeviceEventInfoEXT +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -struct VkDisplayEventInfoEXT +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkSwapchainCounterCreateInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT + mutableDescriptorType::VkBool32 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 +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} 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 +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkVertexInputBindingDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPresentTimesInfoGOOGLE +struct VkPhysicalDeviceDrmPropertiesEXT 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX +const VkDeviceAddressBindingFlagsEXT = VkFlags + +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 + reportAddressBinding::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 +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPipelineViewportDepthClipControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + negativeOneToOne::VkBool32 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 +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkSubpassShadingPipelineCreateInfoHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + renderPass::VkRenderPass + subpass::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + subpassShading::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) 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 +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + invocationMask::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} + +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +const VkRemoteAddressNV = Ptr{Cvoid} + +struct VkMemoryGetRemoteAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + externalMemoryRDMA::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +const VkPipelineInfoEXT = VkPipelineInfoKHR -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 end -const VkDebugUtilsMessengerEXT = UInt64 - -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -@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 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkFrameBoundaryFlagsEXT = VkFlags -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + frameBoundary::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkFrameBoundaryEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkDebugUtilsMessengerCallbackDataEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT 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} + multisampledRenderToSingleSampled::VkBool32 end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + optimal::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits 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} +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = 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_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = 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_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::VkBool32 end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +struct VkImageViewMinLodCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::Cfloat end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceMultiDrawFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multiDraw::VkBool32 end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceMultiDrawPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiDrawCount::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +struct VkPhysicalDeviceShaderTileImageFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkSampleLocationsInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +const VkMicromapEXT = UInt64 + +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkRenderPassSampleLocationsBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineSampleLocationsStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -struct VkMultisamplePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +const VkMicromapCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} 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 +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] 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 +struct VkMicromapBuildInfoEXT + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 8) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 12) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 16) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 24) + f === :usageCountsCount && return Ptr{UInt32}(x + 32) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 36) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 40) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 56) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 72) + return getfield(x, f) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags - -struct VkPipelineCoverageModulationStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkDrmFormatModifierPropertiesListEXT +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + pVersionData::Ptr{UInt8} end -struct VkImageDrmFormatModifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{32, UInt8} end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkMicromapEXT}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{32, UInt8} end -const VkValidationCacheEXT = UInt64 +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkMicromapEXT}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkValidationCacheCreateFlagsEXT = VkFlags +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkValidationCacheCreateInfoEXT +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end + +struct VkCopyMicromapInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkMicromapBuildSizesInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 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) +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{56, UInt8} end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :indexType && return Ptr{VkIndexType}(x + 8) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :indexStride && return Ptr{VkDeviceSize}(x + 24) + f === :baseTriangle && return Ptr{UInt32}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 36) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 40) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 44) + f === :micromap && return Ptr{VkMicromapEXT}(x + 48) + return getfield(x, f) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} -@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 +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) 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 +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkPhysicalDeviceShadingRateImagePropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -const VkAccelerationStructureNV = UInt64 - -@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 +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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 = 2 - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 - VK_GEOMETRY_TYPE_AABBS_NV = 1 - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) 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_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 +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) 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 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR - -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -@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 +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) 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_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -const VkGeometryInstanceFlagsKHR = VkFlags - -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR - -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -const VkBuildAccelerationStructureFlagsKHR = VkFlags +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -struct VkRayTracingPipelineCreateInfoNV +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 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 + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 end -struct VkGeometryTrianglesNV +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI 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 + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize end -struct VkGeometryAABBNV +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize + clusterShadingRate::VkBool32 end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} + +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkWriteDescriptorSetAccelerationStructureNV +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -struct VkAccelerationStructureMemoryRequirementsInfoNV +struct VkSamplerBorderColorComponentMappingCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV + components::VkComponentMapping + srgb::VkBool32 end -struct VkPhysicalDeviceRayTracingPropertiesNV +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 + pageableDeviceLocalMemory::VkBool32 end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -const VkAabbPositionsNV = VkAabbPositionsKHR +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} -end +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 +end -# 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} +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 +end -# 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} +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 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) +struct VkRenderPassStripeInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeArea::VkRect2D end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkRenderPassStripeBeginInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkRenderPassStripeSubmitInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapOffset::VkBool32 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 +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D 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 +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} 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 +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize 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) +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectCopy::VkBool32 end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedQueues::VkQueueFlags end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} + +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 + +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + memoryDecompression::VkBool32 end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -struct VkImportMemoryHostPointerInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkMemoryHostPointerPropertiesEXT +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress +end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) - ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 +end -struct VkPipelineCompilerControlCreateInfoAMD +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD + spheres::VkBool32 + linearSweptSpheres::VkBool32 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 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{88, UInt8} end -struct VkCalibratedTimestampInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :radiusFormat && return Ptr{VkFormat}(x + 32) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 48) + f === :indexType && return Ptr{VkIndexType}(x + 56) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :indexStride && return Ptr{VkDeviceSize}(x + 72) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 80) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 84) + return getfield(x, f) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{80, UInt8} 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) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :radiusFormat && return Ptr{VkFormat}(x + 32) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 48) + f === :indexType && return Ptr{VkIndexType}(x + 56) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :indexStride && return Ptr{VkDeviceSize}(x + 72) + return getfield(x, f) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV 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 + linearColorAttachment::VkBool32 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 +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionControlSwapchain::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 + maxCommandBufferNestingLevel::UInt32 end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo - -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 + acquireUnmodifiedMemory::VkBool32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT 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 + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 +end -# 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_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFootprint::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) -const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) - ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkQueueFamilyCheckpointPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkCheckpointDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +end + +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -const VkPerformanceConfigurationINTEL = UInt64 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +end -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) 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 +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +end -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 + subpassMergeFeedback::VkBool32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 + disallowMerging::VkBool32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 +end + +struct VkRenderPassCreationFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +const VkTensorARM = UInt64 + +const VkTensorViewARM = UInt64 + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +const VkTensorCreateFlagsARM = VkFlags64 -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +const VkTensorCreateFlagBitsARM = VkFlags64 -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +const VkTensorViewCreateFlagsARM = VkFlags64 -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +const VkTensorViewCreateFlagBitsARM = VkFlags64 -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end +const VkTensorUsageFlagsARM = VkFlags64 -const VkShaderCorePropertiesFlagsAMD = VkFlags +const VkTensorUsageFlagBitsARM = VkFlags64 -struct VkPhysicalDeviceShaderCoreProperties2AMD +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT +struct VkTensorViewCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} + tensor::VkTensorARM end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - memoryPriority::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -struct VkMemoryPriorityAllocateInfoEXT +struct VkWriteDescriptorSetTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - priority::Cfloat + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo - -struct VkBufferDeviceAddressCreateInfoEXT +struct VkTensorMemoryBarrierARM 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 - -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits - -const VkToolPurposeFlagsEXT = VkToolPurposeFlags - -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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 +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} end -struct VkValidationFeaturesEXT +struct VkTensorCopyARM sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} 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 +struct VkCopyTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} 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 +struct VkMemoryDedicatedAllocateInfoTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM end -struct VkCooperativeMatrixPropertiesNV +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +struct VkExternalTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + externalMemoryProperties::VkExternalMemoryProperties end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkExternalMemoryTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + handleTypes::VkExternalMemoryHandleTypeFlags 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) +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBufferTensorDescriptors::VkBool32 end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t 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 +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags - -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +struct VkTensorCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tensor::VkTensorARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + tensorView::VkTensorViewARM end -struct VkFramebufferMixedSamplesCombinationNV +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) -const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) - ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) +end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) 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 +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -# 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} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +const VkOpticalFlowSessionNV = UInt64 -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +const VkOpticalFlowGridSizeFlagsNV = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + opticalFlow::VkBool32 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +struct VkPhysicalDeviceOpticalFlowPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkOpticalFlowImageFormatInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkOpticalFlowUsageFlagsNV end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkOpticalFlowImageFormatPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkOpticalFlowSessionCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkOpticalFlowSessionCreatePrivateDataInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +struct VkOpticalFlowExecuteInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -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 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) 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) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 -end - -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 + legacyDithering::VkBool32 end -const VkPresentScalingFlagsEXT = VkFlags +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 end -const VkPresentGravityFlagsEXT = VkFlags +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 +end -struct VkSurfacePresentModeEXT +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR + antiLag::VkBool32 end -struct VkSurfacePresentScalingCapabilitiesEXT +struct VkAntiLagPresentationInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkSurfacePresentModeCompatibilityEXT +struct VkAntiLagDataAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} + +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkSwapchainPresentFenceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkSwapchainPresentModesCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} +const VkShaderEXT = UInt64 + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkSwapchainPresentModeInfoEXT +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + shaderObject::VkBool32 end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkReleaseSwapchainImagesInfoEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end -const VkIndirectCommandsLayoutNV = UInt64 +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) end -const VkIndirectStateFlagsNV = VkFlags +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -@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 +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end -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 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkGraphicsShaderGroupCreateInfoNV +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + tileProperties::VkBool32 end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} + +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + amigoProfiling::VkBool32 end -struct VkIndirectCommandsLayoutTokenNV +struct VkAmigoProfilingSubmitInfoSEC 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} + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + multiviewPerViewViewports::VkBool32 end -struct VkGeneratedCommandsInfoNV +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV 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 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 + rayTracingInvocationReorder::VkBool32 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} +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +struct VkPhysicalDeviceCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 +end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{72, UInt8} end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :srcSize && return Ptr{Csize_t}(x + 8) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 24) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 32) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 40) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 44) + f === :numRows && return Ptr{UInt32}(x + 48) + f === :numColumns && return Ptr{UInt32}(x + 52) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 56) + f === :srcStride && return Ptr{Csize_t}(x + 60) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :dstStride && return Ptr{Csize_t}(x + 68) + return getfield(x, f) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + extendedSparseAddressSpace::VkBool32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties - -struct VkRenderPassTransformBeginInfoQCOM +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + legacyVertexAttributes::VkBool32 end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D + nativeUnalignedPerformance::VkBool32 end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkDeviceMemoryReportFlagsEXT = VkFlags +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDeviceMemoryReportCallbackDataEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + shaderCoreBuiltins::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 +end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + presentID::UInt64 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + latencyModeEnable::VkBool32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + queueType::VkOutOfBandQueueTypeNV end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkLatencySurfaceCapabilitiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} end -const VkPrivateDataSlotEXT = VkPrivateDataSlot +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +const VkDataGraphPipelineSessionARM = UInt64 + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 -@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkDataGraphPipelineConstantARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + id::UInt32 + pConstantData::Ptr{Cvoid} end -const VkAccelerationStructureKHR = UInt64 - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkDataGraphPipelineResourceInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkDataGraphPipelineCompilerControlCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + pVendorOptions::Ptr{Cchar} end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkDataGraphPipelineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -struct VkDescriptorAddressInfoEXT +struct VkDataGraphPipelineShaderModuleCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -struct VkDescriptorBufferBindingInfoEXT +struct VkDataGraphPipelineSessionCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + session::VkDataGraphPipelineSessionARM end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkDataGraphPipelineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraphPipeline::VkPipeline end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkDescriptorGetInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + flags::VkDataGraphPipelineDispatchFlagsARM end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 +end + +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkDataGraphProcessingEngineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags - -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkGraphicsPipelineLibraryCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + multiviewPerViewRenderAreas::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags - -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags - -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM +end -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrDegamma::VkBool32 end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkAccelerationStructureMotionInfoNV +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV + cubicRangeClamp::VkBool32 end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopDynamicState::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} + +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPoolOverallocation::VkBool32 end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileMemoryHeap::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} - -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +struct VkDisplaySurfaceStereoCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkDisplayModeStereoPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + hdmi3DSupported::VkBool32 end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkPhysicalDeviceRawAccessChainsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + shaderRawAccessChains::VkBool32 end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + reservedExternalQueues::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + preferredQueue::VkQueue end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkExternalComputeQueueDataParamsNV sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + deviceIndex::UInt32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + shaderFloat16VectorAtomics::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + shaderReplicatedComposites::VkBool32 end -struct VkImageSubresource2EXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkImageCompressionPropertiesEXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + rayTracingValidation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDevice4444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceFaultFeaturesEXT +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceFaultCountsEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize +struct VkClusterAccelerationStructureClustersBottomLevelInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkClusterAccelerationStructureTriangleClusterInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{28, UInt8} end -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 16) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 20) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 24) + return getfield(x, f) +end -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkMutableDescriptorTypeCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] +end -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkVertexInputBindingDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{144, UInt8} end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 8) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 40) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 48) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 56) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 80) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 104) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 128) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 136) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkDeviceAddressBindingFlagsEXT = VkFlags +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceAddressBindingCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClipControl::VkBool32 +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPipelineViewportDepthClipControlCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress +end -struct VkMemoryGetRemoteAddressInfoNV +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 + allowClusterAccelerationStructure::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -const VkPipelineInfoEXT = VkPipelineInfoKHR +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -struct VkPipelinePropertiesIdentifierEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 + maxPartitionCount::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +struct VkPartitionedAccelerationStructureFlagsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + enablePartitionTranslation::VkBool32 +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkSubpassResolvePerformanceQueryEXT +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} +end + +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - optimal::VkBool32 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -struct VkMultisampledRenderToSingleSampledInfoEXT +struct VkPartitionedAccelerationStructureInstancesInputNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT +struct VkBuildPartitionedAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end +const VkIndirectExecutionSetEXT = UInt64 -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end +const VkIndirectCommandsLayoutEXT = UInt64 -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineColorWriteCreateInfoEXT +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) -end - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR - -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - minLod::VkBool32 + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkImageViewMinLodCreateInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 +struct VkIndirectExecutionSetInfoEXT + data::NTuple{4, UInt8} end -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) -end +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -const VkMicromapEXT = UInt64 - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{16, UInt8} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 8) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 12) + return getfield(x, f) end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -const VkBuildMicromapFlagsEXT = VkFlags +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange +end -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -const VkMicromapCreateFlagsEXT = VkFlags +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT +end -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} +struct VkIndirectCommandsTokenDataEXT + data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) return getfield(x, f) end -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) fptr = getproperty(ptr, f) GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val end ref[] end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{20, UInt8} end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 8) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 12) + f === :offset && return Ptr{UInt32}(x + 16) + return getfield(x, f) end -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -struct VkMicromapVersionInfoEXT +struct VkIndirectCommandsLayoutCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -struct VkCopyMicromapToMemoryInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -struct VkCopyMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -struct VkMicromapBuildSizesInfoEXT +struct VkGeneratedCommandsPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + pipeline::VkPipeline end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 +struct VkWriteIndirectExecutionSetShaderEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + shader::VkShaderEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + imageAlignmentControl::VkBool32 end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedImageAlignmentMask::UInt32 end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkImageAlignmentControlCreateInfoMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + maximumRequestedAlignment::UInt32 end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceDepthClampControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampControl::VkBool32 end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPipelineViewportDepthClampControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + hdrVivid::VkBool32 end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkHdrVividDynamicMetadataHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + pipelineOpacityMicromap::VkBool32 end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + vertexAttributeRobustness::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} - -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapLayered::VkBool32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 + presentMetering::VkBool32 end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkDescriptorSetBindingReferenceVALVE +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 + pipelineCacheIncrementalMode::VkBool32 end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{56, UInt8} end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :maxVertex && return Ptr{UInt32}(x + 32) + f === :indexType && return Ptr{VkIndexType}(x + 36) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end + +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{24, UInt8} end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :stride && return Ptr{VkDeviceSize}(x + 16) + return getfield(x, f) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{24, UInt8} end -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - indirectCopy::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{56, UInt8} end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 +struct VkAccelerationStructureGeometryKHR + data::NTuple{80, UInt8} end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 8) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 16) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 72) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{64, UInt8} end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 16) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :geometryCount && return Ptr{UInt32}(x + 40) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 44) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 48) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 56) + return getfield(x, f) end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkImageViewSampleWeightCreateInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkAccelerationStructureCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +struct VkWriteDescriptorSetAccelerationStructureKHR sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 -end - -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp -end - -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = 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_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) -end +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) -end +# 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} -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) -end +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationControlEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disallowMerging::VkBool32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 -end +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const wl_display = Cvoid -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_surface = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV = UInt64 - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 0 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +const VK_NULL_HANDLE = Culonglong(0) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{56, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 0 +const VK_KHR_external_fence_fd = 1 -const VK_NULL_HANDLE = Culonglong(0) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20613,13 +32520,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20691,7 +32598,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20797,7 +32704,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20815,16 +32722,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21067,7 +32980,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21191,7 +33104,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21261,6 +33174,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21305,10 +33230,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21369,6 +33300,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21413,7 +33356,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21443,7 +33386,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21495,9 +33438,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21519,6 +33468,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21549,7 +33504,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21569,6 +33524,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21583,7 +33544,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21599,6 +33560,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21617,9 +33598,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21635,6 +33622,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21659,6 +33658,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21677,6 +33688,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21699,7 +33716,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21709,6 +33726,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21733,12 +33762,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21751,6 +33804,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/armv7l-linux-musleabihf.jl b/lib/armv7l-linux-musleabihf.jl index a9af2a7..162dbce 100644 --- a/lib/armv7l-linux-musleabihf.jl +++ b/lib/armv7l-linux-musleabihf.jl @@ -111,6 +111,7 @@ const VkCommandPool = UInt64 VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -125,21 +126,26 @@ const VkCommandPool = UInt64 VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -360,6 +366,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -410,8 +466,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -419,10 +504,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -434,9 +515,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -451,7 +529,6 @@ end 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 @@ -464,6 +541,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -472,6 +550,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -507,6 +586,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -572,7 +653,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -580,15 +660,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -596,6 +670,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -611,14 +687,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -643,11 +722,7 @@ end 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 @@ -655,16 +730,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -678,11 +747,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -692,8 +762,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -706,8 +794,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -743,8 +829,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -785,6 +869,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -799,6 +885,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -811,26 +899,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -839,6 +945,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -852,19 +982,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -873,7 +1233,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -894,6 +1253,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -907,6 +1269,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -946,6 +1309,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -965,11 +1329,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -984,6 +1355,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -997,11 +1371,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1027,10 +1428,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1038,6 +1442,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1064,6 +1499,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1071,10 +1507,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1132,7 +1575,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1140,12 +1591,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1403,6 +1856,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1411,7 +1866,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1466,6 +1936,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1503,6 +1976,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1655,20 +2129,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1679,6 +2155,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1699,6 +2176,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1714,6 +2194,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1837,7 +2318,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1847,7 +2330,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1866,6 +2351,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1879,15 +2365,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1919,11 +2409,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -1982,6 +2474,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2017,13 +2511,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2051,16 +2547,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2076,6 +2581,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2104,7 +2610,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,20 +2652,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2213,6 +2727,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2233,6 +2752,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2259,11 +2779,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2287,6 +2810,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2311,8 +2835,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2321,6 +2845,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2332,15 +2858,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2452,6 +2979,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2463,10 +2992,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2486,6 +3018,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,6 +3037,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2513,6 +3048,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3646,6 +4182,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3687,6 +4231,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3701,9 +4253,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5304,6 +5889,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5318,7 +5904,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5342,6 +5932,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5368,6 +5959,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6282,6 +6877,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6311,6 +6908,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6331,11 +6929,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7120,9 +7720,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7527,16 +8130,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :imageView && return Ptr{VkImageView}(x + 8) + f === :imageLayout && return Ptr{VkImageLayout}(x + 16) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 20) + f === :resolveImageView && return Ptr{VkImageView}(x + 24) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 32) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 36) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 40) + f === :clearValue && return Ptr{VkClearValue}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8070,2723 +8713,3020 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 2147483647 end -const VkCompositeAlphaFlagsKHR = VkFlags +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 +end -const VkSurfaceTransformFlagsKHR = VkFlags +const VkMemoryUnmapFlags = VkFlags -struct VkSurfaceCapabilitiesKHR - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags -end +const VkPipelineCreateFlags2 = VkFlags64 -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkHostImageCopyFlags = VkFlags -# 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) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR = UInt64 - -const VkDisplayModeKHR = UInt64 +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR = UInt64 +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionParametersKHR = UInt64 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} -end - -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties -end - -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags -end - -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags -end - -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end - -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceKHR = UInt64 -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +@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 -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} +@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 -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR +@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 -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = UInt64 -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) -end +const VkDeviceGroupPresentModeFlagsKHR = VkFlags -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +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 -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} -const VkVideoDecodeUsageFlagsKHR = VkFlags +# 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} -const VkVideoDecodeFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +# 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 -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin - 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 - STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +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 -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR end -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 end -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 end -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +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 Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) -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 Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) end -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] -end +const VkVideoSessionKHR = UInt64 -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} -end +const VkVideoSessionParametersKHR = UInt64 -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 end -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +const VkVideoSessionParametersCreateFlagsKHR = VkFlags -struct VkVideoDecodeH264ProfileInfoKHR +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + queryResultStatusSupport::VkBool32 end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkQueueFamilyVideoPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + videoCodecOperations::VkVideoCodecOperationFlagsKHR end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkVideoProfileInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkVideoProfileListInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} end -struct VkVideoDecodeH264PictureInfoKHR +struct VkVideoCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties end -struct VkVideoDecodeH264DpbSlotInfoKHR +struct VkPhysicalDeviceVideoFormatInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + imageUsage::VkImageUsageFlags end -const VkRenderingFlagsKHR = VkRenderingFlags - -const VkRenderingFlagBitsKHR = VkRenderingFlagBits - -const VkRenderingInfoKHR = VkRenderingInfo - -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo - -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo - -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures - -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo - -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +struct VkVideoFormatPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags end -struct VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkVideoPictureResourceInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView end -struct VkAttachmentSampleCountInfoAMD +struct VkVideoReferenceSlotInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX +struct VkVideoSessionMemoryRequirementsKHR sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} -const VkFormatProperties2KHR = VkFormatProperties2 - -const VkImageFormatProperties2KHR = VkImageFormatProperties2 - -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 - -const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 - -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 - -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 - -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = 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_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = 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_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) + ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) + ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) + ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) 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) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) + ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) + ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) 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) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) 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) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) 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) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) 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) +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end +const VkVideoDecodeCapabilityFlagsKHR = VkFlags -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +const VkVideoDecodeUsageFlagsKHR = VkFlags -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +const VkVideoDecodeFlagsKHR = VkFlags -struct VkImportMemoryFdInfoKHR +struct VkVideoDecodeCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + flags::VkVideoDecodeCapabilityFlagsKHR end -struct VkMemoryFdPropertiesKHR +struct VkVideoDecodeUsageInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + videoUsageHints::VkVideoDecodeUsageFlagsKHR end -struct VkMemoryGetFdInfoKHR +struct VkVideoDecodeInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 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) +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 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 +@cenum StdVideoH264AspectRatioIdc::UInt32 begin + 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 + STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -struct VkSemaphoreGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 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} +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 end -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 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} +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +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) +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features - -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features - -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures - -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 VkPresentRegionsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} +struct StdVideoH264SequenceParameterSetVui + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) 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) +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) 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) +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +struct StdVideoH264SequenceParameterSet + data::NTuple{76, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 68) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 72) + return getfield(x, f) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags - -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end -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 - -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end 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 +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +struct StdVideoH264PictureParameterSet + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) 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 +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] 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 +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 end -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} end -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} end -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPerformanceCounterKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPerformanceCounterDescriptionKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkQueryPoolPerformanceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, 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) +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) return getfield(x, f) end -function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) - r = Ref{VkPerformanceCounterResultKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} - -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved ref[] end -struct VkAcquireProfilingLockInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} end -struct VkPerformanceQuerySubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - counterPassIndex::UInt32 +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) -const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +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) +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 end -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +struct StdVideoEncodeH264ReferenceListsInfo + data::NTuple{92, UInt8} +end -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 84) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 88) + return getfield(x, f) +end -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +struct StdVideoEncodeH264PictureInfo + data::NTuple{28, UInt8} +end -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +struct StdVideoEncodeH264SliceHeader + data::NTuple{28, UInt8} end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) end -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkDisplayPlaneInfo2KHR +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 end -struct VkDisplayPlaneCapabilities2KHR +struct VkVideoEncodeH264SessionCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, 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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} 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) +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} 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) +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 end -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} 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) +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc end -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 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) +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 end -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures - -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features - -struct VkPhysicalDeviceShaderClockFeaturesKHR +struct VkVideoEncodeH264GopRemainingFrameInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 end @cenum StdVideoH265ChromaFormatIdc::UInt32 begin @@ -10938,6 +11878,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) ref = Ref{StdVideoH265HrdFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) @@ -10952,21 +11900,66 @@ function StdVideoH265HrdFlags(nal_hrd_parameters_present_flag::UInt32, vcl_hrd_p end struct StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] end struct StdVideoH265VpsFlags @@ -11024,6 +12017,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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) ref = Ref{StdVideoH265VpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) @@ -11090,6 +12091,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, end end +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) ref = Ref{StdVideoH265ProfileTierLevelFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) @@ -11102,44 +12111,119 @@ function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_pr end struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc + data::NTuple{12, UInt8} end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) 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} +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 28) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) @@ -11200,6 +12284,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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) ref = Ref{StdVideoH265SpsVuiFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) @@ -11225,32 +12317,88 @@ function StdVideoH265SpsVuiFlags(aspect_ratio_info_present_flag::UInt32, oversca end struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} + data::NTuple{52, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] end struct StdVideoH265PredictorPaletteEntries @@ -11338,6 +12486,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) ref = Ref{StdVideoH265SpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) @@ -11427,6 +12583,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbo end end +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) @@ -11436,20 +12600,64 @@ function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag:: end struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] end struct StdVideoH265LongTermRefPicsSps @@ -11458,45 +12666,114 @@ struct StdVideoH265LongTermRefPicsSps end struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} + data::NTuple{84, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 60) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 64) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 68) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 76) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] end struct StdVideoH265PpsFlags @@ -11581,6 +12858,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) ref = Ref{StdVideoH265PpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) @@ -11618,8932 +12903,19554 @@ function StdVideoH265PpsFlags(dependent_slice_segments_enabled_flag::UInt32, out ref[] end -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +struct StdVideoH265PictureParameterSet + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 132) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{28, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 28) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR = UInt64 + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{536, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 8) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 264) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 520) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 528) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR = UInt64 + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 20) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 24) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 76) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 80) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 84) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 88) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 92) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 96) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 100) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{116, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 84) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 92) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 96) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 100) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 104) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 108) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 112) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{44, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 36) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX = UInt64 + +const VkCuFunctionNVX = UInt64 + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, 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 + +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 + +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + 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 + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +struct VkMultiviewPerViewAttributesInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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 + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + 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 vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, 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 vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, 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 vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, 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 vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end + +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures + +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties + +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock + +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo + +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 vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, 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 + +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD + +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 + +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +end + +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +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 + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, 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 vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, 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 vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, 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 vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, 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 vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, 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 vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, 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 vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, 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 vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureNV = UInt64 + +@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 = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + 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_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 +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 VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 +end + +@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_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + 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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + 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 VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} +end + +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), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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 , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * 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 vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, 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 vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, 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 vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, 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 vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, 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 vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, 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 vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, 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 + +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo + +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 + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, 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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, 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 + +const VkTimeDomainEXT = VkTimeDomainKHR + +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, 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 + +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures + +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits + +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags + +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo + +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback + +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + +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 vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +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_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, 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 + +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 +end + +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, 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 vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), 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 + +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end + ref[] +end + +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data + ref[] +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 vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, 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 vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, 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 + +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures + +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties + +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo + +@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 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::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 + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags + +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +end + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), 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_SHADER_VALIDATION_CACHE_EXT = 7 + 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 + +const VkComponentTypeNV = VkComponentTypeKHR + +const VkScopeNV = VkScopeKHR + +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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, 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 + +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end + +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +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 + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkLineRasterizationModeEXT = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo + +# 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 + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, 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 + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +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} -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +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 StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkVideoDecodeH265PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -struct VkVideoDecodeH265DpbSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkQueueFamilyGlobalPriorityPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -const VkDriverIdKHR = VkDriverId +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 -const VkConformanceVersionKHR = VkConformanceVersion +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -const VkSemaphoreTypeKHR = VkSemaphoreType +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkImageSubresource2EXT = VkImageSubresource2 -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = 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_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + minPlacedMemoryMapAlignment::VkDeviceSize end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkMemoryMapPlacedInfoEXT 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 + pPlacedAddress::Ptr{Cvoid} end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -struct VkSurfaceProtectedCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsProtected::VkBool32 -end +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -struct VkPhysicalDevicePresentWaitFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentWait::VkBool32 +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR + +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR + +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} + +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures + +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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkIndirectStateFlagsNV = VkFlags -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +@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 VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +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 VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +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 -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +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 -const VkDeferredOperationKHR = UInt64 +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = 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_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) 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 +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPipelineInfoKHR +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline + inheritedViewportScissor2D::VkBool32 end -struct VkPipelineExecutablePropertiesKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkPipelineExecutableInfoKHR +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 -end - -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} + texelBufferAlignment::VkBool32 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 +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -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) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR end -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} - -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineExecutableStatisticKHR +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -struct VkPipelineExecutableInternalRepresentationKHR +struct VkDepthBiasInfoEXT 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) + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 end -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures - -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +const VkDeviceMemoryReportFlagsEXT = VkFlags -struct VkPipelineLibraryCreateInfoKHR +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} + deviceMemoryReport::VkBool32 end -struct VkPresentIdKHR +struct VkDeviceMemoryReportCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 end -struct VkPhysicalDevicePresentIdFeaturesKHR +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} + +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentId::VkBool32 + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} end -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} -const VkAccessFlags2KHR = VkAccessFlags2 +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -const VkSubmitFlagsKHR = VkSubmitFlags +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{28, UInt8} +end + +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 8) + f === :format && return Ptr{VkFormat}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkDependencyInfoKHR = VkDependencyInfo +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +struct VkPhysicalDevicePresentBarrierFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentBarrier::VkBool32 +end -struct VkQueueFamilyCheckpointProperties2NV +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + presentBarrierSupported::VkBool32 end -struct VkCheckpointData2NV +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + presentBarrierEnable::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) -end +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end +const VkTileShadingRenderPassFlagsQCOM = VkFlags -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceTileShadingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceTileShadingPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkPerTileBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 - -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 - -const VkBlitImageInfo2KHR = VkBlitImageInfo2 - -const VkResolveImageInfo2KHR = VkResolveImageInfo2 - -const VkBufferCopy2KHR = VkBufferCopy2 - -const VkImageCopy2KHR = VkImageCopy2 - -const VkImageBlit2KHR = VkImageBlit2 - -const VkBufferImageCopy2KHR = VkBufferImageCopy2 - -const VkImageResolve2KHR = VkImageResolve2 - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} - -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +const VkAccelerationStructureKHR = UInt64 + +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 - -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 - -const VkFormatProperties3KHR = VkFormatProperties3 - -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + combinedImageSamplerDensityMapDescriptorSize::Csize_t end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} - -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkDescriptorAddressInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkDescriptorBufferBindingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties - -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements - -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} - -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) 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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 -end +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} -@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 +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] 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} +struct VkDescriptorGetInfoEXT + data::NTuple{24, UInt8} 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) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkDescriptorType}(x + 8) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 16) + return getfield(x, f) end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + imageView::VkImageView end -struct VkDebugMarkerObjectNameInfoEXT +struct VkSamplerCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + sampler::VkSampler end -struct VkDebugMarkerObjectTagInfoEXT +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + opaqueCaptureDescriptorData::Ptr{Cvoid} end -struct VkDebugMarkerMarkerInfoEXT +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkDedicatedAllocationBufferCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPipelineRasterizationStateStreamCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) 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} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end -# 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} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end -# 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} +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# 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 vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags + +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibrary::VkBool32 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT 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) +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -const VkCuModuleNVX = UInt64 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 +end -const VkCuFunctionNVX = UInt64 +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCuFunctionCreateInfoNVX +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} + +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkCuLaunchInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} + +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{16, UInt8} end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + return getfield(x, f) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -struct VkImageViewHandleInfoNVX +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -struct VkImageViewAddressPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat 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} +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} +end -# 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 Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) +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) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) 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 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) 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 +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} 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 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) 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 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkExternalMemoryFeatureFlagsNV = VkFlags - -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -struct VkExternalMemoryImageCreateInfoNV +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 end -struct VkExportMemoryAllocateInfoNV +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT 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 + ycbcr2plane444Formats::VkBool32 end -struct VkValidationFlagsEXT +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} + fragmentDensityMapDeferred::VkBool32 end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures - -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + transform::VkSurfaceTransformFlagBitsKHR end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 -end +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT -end +const VkImageCompressionFlagsEXT = VkFlags -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT -end +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + imageCompressionControl::VkBool32 end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkImageCompressionControlEXT 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -struct VkPipelineViewportWScalingStateCreateInfoNV +struct VkImageCompressionPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT 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) +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopLayout::VkBool32 end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 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) +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceFaultFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -const VkSurfaceCounterFlagsEXT = VkFlags - -struct VkSurfaceCapabilities2EXT +struct VkDeviceFaultCountsEXT 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 + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize 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) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 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 +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} + +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkDeviceEventInfoEXT +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -struct VkDisplayEventInfoEXT +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkSwapchainCounterCreateInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT + mutableDescriptorType::VkBool32 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 +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} 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 +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkVertexInputBindingDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPresentTimesInfoGOOGLE +struct VkPhysicalDeviceDrmPropertiesEXT 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX +const VkDeviceAddressBindingFlagsEXT = VkFlags + +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 + reportAddressBinding::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 +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPipelineViewportDepthClipControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + negativeOneToOne::VkBool32 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 +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkSubpassShadingPipelineCreateInfoHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + renderPass::VkRenderPass + subpass::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + subpassShading::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) 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 +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + invocationMask::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} + +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +const VkRemoteAddressNV = Ptr{Cvoid} + +struct VkMemoryGetRemoteAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + externalMemoryRDMA::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +const VkPipelineInfoEXT = VkPipelineInfoKHR -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 end -const VkDebugUtilsMessengerEXT = UInt64 - -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -@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 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkFrameBoundaryFlagsEXT = VkFlags -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + frameBoundary::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkFrameBoundaryEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkDebugUtilsMessengerCallbackDataEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT 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} + multisampledRenderToSingleSampled::VkBool32 end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + optimal::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits 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} +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = 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_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = 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_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::VkBool32 end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +struct VkImageViewMinLodCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::Cfloat end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceMultiDrawFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multiDraw::VkBool32 end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceMultiDrawPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiDrawCount::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +struct VkPhysicalDeviceShaderTileImageFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkSampleLocationsInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +const VkMicromapEXT = UInt64 + +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkRenderPassSampleLocationsBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineSampleLocationsStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -struct VkMultisamplePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +const VkMicromapCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} 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 +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] 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 +struct VkMicromapBuildInfoEXT + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 8) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 12) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 16) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 24) + f === :usageCountsCount && return Ptr{UInt32}(x + 32) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 36) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 40) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 56) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 72) + return getfield(x, f) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags - -struct VkPipelineCoverageModulationStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkDrmFormatModifierPropertiesListEXT +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + pVersionData::Ptr{UInt8} end -struct VkImageDrmFormatModifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{32, UInt8} end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkMicromapEXT}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{32, UInt8} end -const VkValidationCacheEXT = UInt64 +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkMicromapEXT}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkValidationCacheCreateFlagsEXT = VkFlags +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkValidationCacheCreateInfoEXT +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end + +struct VkCopyMicromapInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkMicromapBuildSizesInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 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) +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{56, UInt8} end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :indexType && return Ptr{VkIndexType}(x + 8) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :indexStride && return Ptr{VkDeviceSize}(x + 24) + f === :baseTriangle && return Ptr{UInt32}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 36) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 40) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 44) + f === :micromap && return Ptr{VkMicromapEXT}(x + 48) + return getfield(x, f) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} -@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 +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) 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 +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkPhysicalDeviceShadingRateImagePropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -const VkAccelerationStructureNV = UInt64 - -@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 +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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 = 2 - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 - VK_GEOMETRY_TYPE_AABBS_NV = 1 - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) 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_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 +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) 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 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR - -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -@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 +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) 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_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -const VkGeometryInstanceFlagsKHR = VkFlags - -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR - -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -const VkBuildAccelerationStructureFlagsKHR = VkFlags +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -struct VkRayTracingPipelineCreateInfoNV +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 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 + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 end -struct VkGeometryTrianglesNV +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI 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 + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize end -struct VkGeometryAABBNV +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize + clusterShadingRate::VkBool32 end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} + +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkWriteDescriptorSetAccelerationStructureNV +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -struct VkAccelerationStructureMemoryRequirementsInfoNV +struct VkSamplerBorderColorComponentMappingCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV + components::VkComponentMapping + srgb::VkBool32 end -struct VkPhysicalDeviceRayTracingPropertiesNV +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 + pageableDeviceLocalMemory::VkBool32 end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -const VkAabbPositionsNV = VkAabbPositionsKHR +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} -end +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 +end -# 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} +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 +end -# 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} +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 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) +struct VkRenderPassStripeInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeArea::VkRect2D end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkRenderPassStripeBeginInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkRenderPassStripeSubmitInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapOffset::VkBool32 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 +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D 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 +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} 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 +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize 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) +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectCopy::VkBool32 end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedQueues::VkQueueFlags end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} + +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 + +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + memoryDecompression::VkBool32 end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -struct VkImportMemoryHostPointerInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkMemoryHostPointerPropertiesEXT +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress +end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) - ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 +end -struct VkPipelineCompilerControlCreateInfoAMD +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD + spheres::VkBool32 + linearSweptSpheres::VkBool32 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 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{88, UInt8} end -struct VkCalibratedTimestampInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :radiusFormat && return Ptr{VkFormat}(x + 32) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 48) + f === :indexType && return Ptr{VkIndexType}(x + 56) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :indexStride && return Ptr{VkDeviceSize}(x + 72) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 80) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 84) + return getfield(x, f) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{80, UInt8} 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) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :radiusFormat && return Ptr{VkFormat}(x + 32) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 48) + f === :indexType && return Ptr{VkIndexType}(x + 56) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :indexStride && return Ptr{VkDeviceSize}(x + 72) + return getfield(x, f) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV 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 + linearColorAttachment::VkBool32 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 +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionControlSwapchain::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 + maxCommandBufferNestingLevel::UInt32 end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo - -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 + acquireUnmodifiedMemory::VkBool32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT 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 + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 +end -# 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_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFootprint::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) -const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) - ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkQueueFamilyCheckpointPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkCheckpointDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +end + +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -const VkPerformanceConfigurationINTEL = UInt64 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +end -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) 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 +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +end -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 + subpassMergeFeedback::VkBool32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 + disallowMerging::VkBool32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 +end + +struct VkRenderPassCreationFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +const VkTensorARM = UInt64 + +const VkTensorViewARM = UInt64 + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +const VkTensorCreateFlagsARM = VkFlags64 -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +const VkTensorCreateFlagBitsARM = VkFlags64 -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +const VkTensorViewCreateFlagsARM = VkFlags64 -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +const VkTensorViewCreateFlagBitsARM = VkFlags64 -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end +const VkTensorUsageFlagsARM = VkFlags64 -const VkShaderCorePropertiesFlagsAMD = VkFlags +const VkTensorUsageFlagBitsARM = VkFlags64 -struct VkPhysicalDeviceShaderCoreProperties2AMD +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT +struct VkTensorViewCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} + tensor::VkTensorARM end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - memoryPriority::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -struct VkMemoryPriorityAllocateInfoEXT +struct VkWriteDescriptorSetTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - priority::Cfloat + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo - -struct VkBufferDeviceAddressCreateInfoEXT +struct VkTensorMemoryBarrierARM 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 - -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits - -const VkToolPurposeFlagsEXT = VkToolPurposeFlags - -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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 +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} end -struct VkValidationFeaturesEXT +struct VkTensorCopyARM sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} 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 +struct VkCopyTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} 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 +struct VkMemoryDedicatedAllocateInfoTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM end -struct VkCooperativeMatrixPropertiesNV +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +struct VkExternalTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + externalMemoryProperties::VkExternalMemoryProperties end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkExternalMemoryTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + handleTypes::VkExternalMemoryHandleTypeFlags 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) +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBufferTensorDescriptors::VkBool32 end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t 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 +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags - -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +struct VkTensorCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tensor::VkTensorARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + tensorView::VkTensorViewARM end -struct VkFramebufferMixedSamplesCombinationNV +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) -const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) - ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) +end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) 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 +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -# 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} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +const VkOpticalFlowSessionNV = UInt64 -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +const VkOpticalFlowGridSizeFlagsNV = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + opticalFlow::VkBool32 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +struct VkPhysicalDeviceOpticalFlowPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkOpticalFlowImageFormatInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkOpticalFlowUsageFlagsNV end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkOpticalFlowImageFormatPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkOpticalFlowSessionCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkOpticalFlowSessionCreatePrivateDataInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +struct VkOpticalFlowExecuteInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -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 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) 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) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 -end - -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 + legacyDithering::VkBool32 end -const VkPresentScalingFlagsEXT = VkFlags +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 end -const VkPresentGravityFlagsEXT = VkFlags +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 +end -struct VkSurfacePresentModeEXT +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR + antiLag::VkBool32 end -struct VkSurfacePresentScalingCapabilitiesEXT +struct VkAntiLagPresentationInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkSurfacePresentModeCompatibilityEXT +struct VkAntiLagDataAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} + +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkSwapchainPresentFenceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkSwapchainPresentModesCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} +const VkShaderEXT = UInt64 + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkSwapchainPresentModeInfoEXT +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + shaderObject::VkBool32 end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkReleaseSwapchainImagesInfoEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end -const VkIndirectCommandsLayoutNV = UInt64 +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) end -const VkIndirectStateFlagsNV = VkFlags +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -@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 +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end -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 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkGraphicsShaderGroupCreateInfoNV +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + tileProperties::VkBool32 end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} + +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + amigoProfiling::VkBool32 end -struct VkIndirectCommandsLayoutTokenNV +struct VkAmigoProfilingSubmitInfoSEC 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} + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + multiviewPerViewViewports::VkBool32 end -struct VkGeneratedCommandsInfoNV +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV 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 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 + rayTracingInvocationReorder::VkBool32 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} +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +struct VkPhysicalDeviceCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 +end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{72, UInt8} end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :srcSize && return Ptr{Csize_t}(x + 8) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 24) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 32) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 40) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 44) + f === :numRows && return Ptr{UInt32}(x + 48) + f === :numColumns && return Ptr{UInt32}(x + 52) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 56) + f === :srcStride && return Ptr{Csize_t}(x + 60) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :dstStride && return Ptr{Csize_t}(x + 68) + return getfield(x, f) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + extendedSparseAddressSpace::VkBool32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties - -struct VkRenderPassTransformBeginInfoQCOM +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + legacyVertexAttributes::VkBool32 end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D + nativeUnalignedPerformance::VkBool32 end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkDeviceMemoryReportFlagsEXT = VkFlags +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDeviceMemoryReportCallbackDataEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + shaderCoreBuiltins::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 +end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + presentID::UInt64 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + latencyModeEnable::VkBool32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + queueType::VkOutOfBandQueueTypeNV end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkLatencySurfaceCapabilitiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} end -const VkPrivateDataSlotEXT = VkPrivateDataSlot +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +const VkDataGraphPipelineSessionARM = UInt64 + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 -@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkDataGraphPipelineConstantARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + id::UInt32 + pConstantData::Ptr{Cvoid} end -const VkAccelerationStructureKHR = UInt64 - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkDataGraphPipelineResourceInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkDataGraphPipelineCompilerControlCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + pVendorOptions::Ptr{Cchar} end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkDataGraphPipelineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -struct VkDescriptorAddressInfoEXT +struct VkDataGraphPipelineShaderModuleCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -struct VkDescriptorBufferBindingInfoEXT +struct VkDataGraphPipelineSessionCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + session::VkDataGraphPipelineSessionARM end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkDataGraphPipelineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraphPipeline::VkPipeline end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkDescriptorGetInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + flags::VkDataGraphPipelineDispatchFlagsARM end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 +end + +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkDataGraphProcessingEngineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags - -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkGraphicsPipelineLibraryCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + multiviewPerViewRenderAreas::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags - -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags - -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM +end -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrDegamma::VkBool32 end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkAccelerationStructureMotionInfoNV +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV + cubicRangeClamp::VkBool32 end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopDynamicState::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} + +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPoolOverallocation::VkBool32 end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileMemoryHeap::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} - -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +struct VkDisplaySurfaceStereoCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkDisplayModeStereoPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + hdmi3DSupported::VkBool32 end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkPhysicalDeviceRawAccessChainsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + shaderRawAccessChains::VkBool32 end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + reservedExternalQueues::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + preferredQueue::VkQueue end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkExternalComputeQueueDataParamsNV sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + deviceIndex::UInt32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + shaderFloat16VectorAtomics::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + shaderReplicatedComposites::VkBool32 end -struct VkImageSubresource2EXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkImageCompressionPropertiesEXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + rayTracingValidation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDevice4444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceFaultFeaturesEXT +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceFaultCountsEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize +struct VkClusterAccelerationStructureClustersBottomLevelInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkClusterAccelerationStructureTriangleClusterInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{28, UInt8} end -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 16) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 20) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 24) + return getfield(x, f) +end -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkMutableDescriptorTypeCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] +end -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkVertexInputBindingDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{144, UInt8} end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 8) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 40) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 48) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 56) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 80) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 104) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 128) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 136) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkDeviceAddressBindingFlagsEXT = VkFlags +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceAddressBindingCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClipControl::VkBool32 +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPipelineViewportDepthClipControlCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress +end -struct VkMemoryGetRemoteAddressInfoNV +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 + allowClusterAccelerationStructure::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -const VkPipelineInfoEXT = VkPipelineInfoKHR +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -struct VkPipelinePropertiesIdentifierEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 + maxPartitionCount::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +struct VkPartitionedAccelerationStructureFlagsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + enablePartitionTranslation::VkBool32 +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkSubpassResolvePerformanceQueryEXT +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} +end + +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - optimal::VkBool32 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -struct VkMultisampledRenderToSingleSampledInfoEXT +struct VkPartitionedAccelerationStructureInstancesInputNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT +struct VkBuildPartitionedAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end +const VkIndirectExecutionSetEXT = UInt64 -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end +const VkIndirectCommandsLayoutEXT = UInt64 -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineColorWriteCreateInfoEXT +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) -end - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR - -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - minLod::VkBool32 + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkImageViewMinLodCreateInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 +struct VkIndirectExecutionSetInfoEXT + data::NTuple{4, UInt8} end -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) -end +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -const VkMicromapEXT = UInt64 - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{16, UInt8} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 8) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 12) + return getfield(x, f) end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -const VkBuildMicromapFlagsEXT = VkFlags +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange +end -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -const VkMicromapCreateFlagsEXT = VkFlags +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT +end -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} +struct VkIndirectCommandsTokenDataEXT + data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) return getfield(x, f) end -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) fptr = getproperty(ptr, f) GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val end ref[] end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{20, UInt8} end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 8) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 12) + f === :offset && return Ptr{UInt32}(x + 16) + return getfield(x, f) end -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -struct VkMicromapVersionInfoEXT +struct VkIndirectCommandsLayoutCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -struct VkCopyMicromapToMemoryInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -struct VkCopyMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -struct VkMicromapBuildSizesInfoEXT +struct VkGeneratedCommandsPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + pipeline::VkPipeline end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 +struct VkWriteIndirectExecutionSetShaderEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + shader::VkShaderEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + imageAlignmentControl::VkBool32 end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedImageAlignmentMask::UInt32 end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkImageAlignmentControlCreateInfoMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + maximumRequestedAlignment::UInt32 end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceDepthClampControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampControl::VkBool32 end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPipelineViewportDepthClampControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + hdrVivid::VkBool32 end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkHdrVividDynamicMetadataHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + pipelineOpacityMicromap::VkBool32 end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + vertexAttributeRobustness::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} - -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapLayered::VkBool32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 + presentMetering::VkBool32 end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkDescriptorSetBindingReferenceVALVE +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 + pipelineCacheIncrementalMode::VkBool32 end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{56, UInt8} end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :maxVertex && return Ptr{UInt32}(x + 32) + f === :indexType && return Ptr{VkIndexType}(x + 36) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end + +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{24, UInt8} end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :stride && return Ptr{VkDeviceSize}(x + 16) + return getfield(x, f) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{24, UInt8} end -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - indirectCopy::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{56, UInt8} end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 +struct VkAccelerationStructureGeometryKHR + data::NTuple{80, UInt8} end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 8) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 16) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 72) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{64, UInt8} end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 16) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :geometryCount && return Ptr{UInt32}(x + 40) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 44) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 48) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 56) + return getfield(x, f) end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkImageViewSampleWeightCreateInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkAccelerationStructureCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +struct VkWriteDescriptorSetAccelerationStructureKHR sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 -end - -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp -end - -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = 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_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) -end +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) -end +# 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} -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) -end +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationControlEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disallowMerging::VkBool32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 -end +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const wl_display = Cvoid -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_surface = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV = UInt64 - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 0 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +const VK_NULL_HANDLE = Culonglong(0) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{56, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 0 +const VK_KHR_external_fence_fd = 1 -const VK_NULL_HANDLE = Culonglong(0) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20613,13 +32520,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20691,7 +32598,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20797,7 +32704,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20815,16 +32722,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21067,7 +32980,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21191,7 +33104,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21261,6 +33174,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21305,10 +33230,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21369,6 +33300,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21413,7 +33356,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21443,7 +33386,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21495,9 +33438,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21519,6 +33468,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21549,7 +33504,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21569,6 +33524,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21583,7 +33544,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21599,6 +33560,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21617,9 +33598,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21635,6 +33622,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21659,6 +33658,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21677,6 +33688,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21699,7 +33716,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21709,6 +33726,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21733,12 +33762,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21751,6 +33804,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/i686-linux-gnu.jl b/lib/i686-linux-gnu.jl index 09b9ebf..9a92092 100644 --- a/lib/i686-linux-gnu.jl +++ b/lib/i686-linux-gnu.jl @@ -111,6 +111,7 @@ const VkCommandPool = UInt64 VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -125,21 +126,26 @@ const VkCommandPool = UInt64 VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -360,6 +366,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -410,8 +466,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -419,10 +504,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -434,9 +515,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -451,7 +529,6 @@ end 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 @@ -464,6 +541,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -472,6 +550,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -507,6 +586,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -572,7 +653,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -580,15 +660,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -596,6 +670,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -611,14 +687,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -643,11 +722,7 @@ end 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 @@ -655,16 +730,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -678,11 +747,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -692,8 +762,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -706,8 +794,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -743,8 +829,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -785,6 +869,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -799,6 +885,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -811,26 +899,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -839,6 +945,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -852,19 +982,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -873,7 +1233,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -894,6 +1253,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -907,6 +1269,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -946,6 +1309,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -965,11 +1329,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -984,6 +1355,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -997,11 +1371,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1027,10 +1428,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1038,6 +1442,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1064,6 +1499,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1071,10 +1507,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1132,7 +1575,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1140,12 +1591,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1403,6 +1856,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1411,7 +1866,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1466,6 +1936,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1503,6 +1976,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1655,20 +2129,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1679,6 +2155,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1699,6 +2176,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1714,6 +2194,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1837,7 +2318,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1847,7 +2330,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1866,6 +2351,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1879,15 +2365,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1919,11 +2409,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -1982,6 +2474,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2017,13 +2511,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2051,16 +2547,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2076,6 +2581,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2104,7 +2610,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,20 +2652,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2213,6 +2727,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2233,6 +2752,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2259,11 +2779,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2287,6 +2810,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2311,8 +2835,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2321,6 +2845,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2332,15 +2858,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2452,6 +2979,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2463,10 +2992,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2486,6 +3018,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,6 +3037,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2513,6 +3048,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3646,6 +4182,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3687,6 +4231,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3701,9 +4253,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5304,6 +5889,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5318,7 +5904,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5342,6 +5932,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5368,6 +5959,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6282,6 +6877,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6311,6 +6908,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6331,11 +6929,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7120,9 +7720,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7527,16 +8130,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{60, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :imageView && return Ptr{VkImageView}(x + 8) + f === :imageLayout && return Ptr{VkImageLayout}(x + 16) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 20) + f === :resolveImageView && return Ptr{VkImageView}(x + 24) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 32) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 36) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 40) + f === :clearValue && return Ptr{VkClearValue}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8070,2834 +8713,3739 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkMemoryUnmapFlags = VkFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 end -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -const VkSwapchainKHR = UInt64 +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end -@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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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} +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource +end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) - ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 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) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior end -const VkDisplayKHR = UInt64 - -const VkDisplayModeKHR = UInt64 - -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR = UInt64 +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionParametersKHR = UInt64 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} +@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 - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags + colorSpace::VkColorSpaceKHR end -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView +# 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 -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -struct VkVideoSessionMemoryRequirementsKHR +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, 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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + 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} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements + 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 VkBindVideoSessionMemoryInfoKHR +struct VkPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -struct VkVideoSessionCreateInfoKHR +struct VkImageSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} + swapchain::VkSwapchainKHR end -struct VkVideoSessionParametersCreateInfoKHR +struct VkBindImageMemorySwapchainInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -struct VkVideoSessionParametersUpdateInfoKHR +struct VkAcquireNextImageInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -struct VkVideoBeginCodingInfoKHR +struct VkDeviceGroupPresentCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -struct VkVideoEndCodingInfoKHR +struct VkDeviceGroupPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -struct VkVideoCodingControlInfoKHR +struct VkDeviceGroupSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR + modes::VkDeviceGroupPresentModeFlagsKHR end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} +# 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_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = 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_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = 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_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = 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_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = 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 vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +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 -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} -const VkVideoDecodeUsageFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} -const VkVideoDecodeFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +# 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 -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264AspectRatioIdc::UInt32 begin - 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 - STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 -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} -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} -end +const VkVideoSessionKHR = UInt64 -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +const VkVideoSessionParametersKHR = UInt64 + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 end -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +const VkVideoComponentBitDepthFlagsKHR = VkFlags -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} -end +const VkVideoCapabilityFlagsKHR = VkFlags -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end +const VkVideoSessionCreateFlagsKHR = VkFlags -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] -end +const VkVideoSessionParametersCreateFlagsKHR = VkFlags -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} -end +const VkVideoBeginCodingFlagsKHR = VkFlags -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties end -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} end -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end - -function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end - -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] -end - -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} -end - -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} -end - -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) -end - -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end - -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end - -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] -end - -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements end -@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags - -struct VkVideoDecodeH264ProfileInfoKHR +struct VkVideoSessionCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkVideoSessionParametersCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkVideoSessionParametersUpdateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + updateSequenceCount::UInt32 end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkVideoBeginCodingInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} end -struct VkVideoDecodeH264PictureInfoKHR +struct VkVideoEndCodingInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} + flags::VkVideoEndCodingFlagsKHR end -struct VkVideoDecodeH264DpbSlotInfoKHR +struct VkVideoCodingControlInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + flags::VkVideoCodingControlFlagsKHR end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} -struct VkRenderingFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D -end +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} -struct VkRenderingFragmentDensityMapAttachmentInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} -struct VkAttachmentSampleCountInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} -struct VkMultiviewPerViewAttributesInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} - -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) + ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) + ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) 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) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) + ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) + ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) + ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) 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) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) 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) +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags +const VkVideoDecodeUsageFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +const VkVideoDecodeFlagsKHR = VkFlags -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties - -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags - -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits - -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags - -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits - -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties - -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +@cenum StdVideoH264AspectRatioIdc::UInt32 begin + 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 + STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end -struct VkImportMemoryFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 end -struct VkMemoryFdPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 end -struct VkMemoryGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags +struct StdVideoH264SequenceParameterSetVui + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end -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) +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) 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 +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkSemaphoreGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end 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) +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct StdVideoH264SequenceParameterSet + data::NTuple{76, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 68) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 72) + return getfield(x, f) end -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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} +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +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) +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +struct StdVideoH264PictureParameterSet + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPresentRegionsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) -const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end -# 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 Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end -const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end -const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end -const VkAttachmentDescription2KHR = VkAttachmentDescription2 +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -const VkAttachmentReference2KHR = VkAttachmentReference2 +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkSubpassDescription2KHR = VkSubpassDescription2 +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkSubpassDependency2KHR = VkSubpassDependency2 +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end -const VkSubpassBeginInfoKHR = VkSubpassBeginInfo +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end -const VkSubpassEndInfoKHR = VkSubpassEndInfo +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +struct StdVideoEncodeH264ReferenceListsInfo + data::NTuple{92, UInt8} end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 84) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 88) + return getfield(x, f) end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] end -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags +struct StdVideoEncodeH264PictureInfo + data::NTuple{28, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end -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) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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 +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +struct StdVideoEncodeH264SliceHeader + data::NTuple{28, UInt8} end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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 +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) 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 +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] end -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR end -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 end -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR +struct VkVideoEncodeH264QualityLevelPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +struct VkVideoEncodeH264SessionCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc end -struct VkPerformanceCounterKHR +struct VkVideoEncodeH264SessionParametersAddInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} end -struct VkPerformanceCounterDescriptionKHR +struct VkVideoEncodeH264SessionParametersCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkVideoEncodeH264SessionParametersGetInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} -end - -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 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) +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 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) +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} end -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} - -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} end -struct VkAcquireProfilingLockInfoKHR +struct VkVideoEncodeH264ProfileInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + stdProfileIdc::StdVideoH264ProfileIdc end -struct VkPerformanceQuerySubmitInfoKHR +struct VkVideoEncodeH264RateControlInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::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) +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 end -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 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 +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +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 -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +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 -# 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) +struct StdVideoH265HrdFlags + data::NTuple{4, UInt8} end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] end -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +struct StdVideoH265HrdParameters + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 44) + return getfield(x, f) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] end -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} end -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] end -const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements - -const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end -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) +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo - -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion - -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkChromaLocationKHR = VkChromaLocation +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +struct StdVideoH265VideoParameterSet + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 28) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 32) + return getfield(x, f) +end -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +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 -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct StdVideoH265SpsVuiFlags + data::NTuple{4, UInt8} end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} +struct StdVideoH265SequenceParameterSetVui + data::NTuple{52, UInt8} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] 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 - -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, 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 - -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 -end - -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 - -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 +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} end -struct StdVideoH265HrdFlags +struct StdVideoH265SpsFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, r) +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -10916,7 +12464,7 @@ function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -10938,52 +12486,63 @@ function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) end end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -struct StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] end -struct StdVideoH265VpsFlags +struct StdVideoH265ShortTermRefPicSetFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, r) +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11002,7 +12561,7 @@ function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11024,32 +12583,241 @@ function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) end end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign ref[] end -struct StdVideoH265ProfileTierLevelFlags +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{84, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 60) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 64) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 68) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 76) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, r) +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11068,7 +12836,7 @@ function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11090,76 +12858,201 @@ function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, end end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag ref[] end -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc +struct StdVideoH265PictureParameterSet + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 132) + return getfield(x, f) end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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} +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct StdVideoH265SpsVuiFlags +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, r) +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11178,7 +13071,7 @@ function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11200,104 +13093,110 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) end end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved ref[] end -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{28, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) end -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct StdVideoH265SpsFlags +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11316,7 +13215,7 @@ function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11338,55 +13237,91 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) end end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved ref[] end -struct StdVideoH265ShortTermRefPicSetFlags +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11405,7 +13340,7 @@ function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11427,120 +13362,111 @@ function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbo end end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 28) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 32) + return getfield(x, f) end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct StdVideoH265PpsFlags +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, r) +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11559,7 +13485,7 @@ function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11581,8969 +13507,18950 @@ function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) end end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId ref[] end -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR = UInt64 + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{532, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 8) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 264) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 520) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 524) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR = UInt64 + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 20) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 24) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 76) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 80) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 84) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 88) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 92) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 96) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 100) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{116, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 84) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 92) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 96) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 100) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 104) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 108) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 112) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{44, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 36) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX = UInt64 + +const VkCuFunctionNVX = UInt64 + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, 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 + +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 + +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + 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 + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +struct VkMultiviewPerViewAttributesInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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 + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + 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 vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, 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 vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, 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 vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, 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 vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end + +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures + +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties + +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock + +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo + +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 vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, 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 + +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD + +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 + +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +end + +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +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 + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, 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 vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, 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 vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, 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 vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, 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 vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, 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 vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, 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 vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, 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 vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureNV = UInt64 + +@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 = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + 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_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 +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 VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 +end + +@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_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + 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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + 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 VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} +end + +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), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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 , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * 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 vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, 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 vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, 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 vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, 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 vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, 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 vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, 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 vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, 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 + +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo + +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 + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, 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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, 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 + +const VkTimeDomainEXT = VkTimeDomainKHR + +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, 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 + +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures + +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits + +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags + +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo + +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback + +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + +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 vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +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_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, 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 + +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 +end + +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, 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 vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), 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 + +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end + ref[] +end + +struct VkPerformanceValueINTEL + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data + ref[] +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 vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, 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 vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, 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 + +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures + +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties + +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo + +@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 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::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 + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags + +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +end + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), 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_SHADER_VALIDATION_CACHE_EXT = 7 + 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 + +const VkComponentTypeNV = VkComponentTypeKHR + +const VkScopeNV = VkScopeKHR + +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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, 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 + +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end + +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +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 + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkLineRasterizationModeEXT = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo + +# 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 + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, 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 + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +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} -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +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 StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkVideoDecodeH265PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -struct VkVideoDecodeH265DpbSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkQueueFamilyGlobalPriorityPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -const VkDriverIdKHR = VkDriverId +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 -const VkConformanceVersionKHR = VkConformanceVersion +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -const VkSemaphoreTypeKHR = VkSemaphoreType +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkImageSubresource2EXT = VkImageSubresource2 -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = 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_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures - -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT 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 + minPlacedMemoryMapAlignment::VkDeviceSize end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end - -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end - -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) + pPlacedAddress::Ptr{Cvoid} end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout - -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -struct VkPhysicalDevicePresentWaitFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentWait::VkBool32 -end +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) -end +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) -end +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +const VkIndirectCommandsLayoutNV = UInt64 -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkDeferredOperationKHR = UInt64 - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} - -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +const VkIndirectStateFlagsNV = VkFlags -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +@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 -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +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 -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 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 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize end -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR +struct VkIndirectCommandsLayoutTokenNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 + 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 VkPipelineInfoKHR +struct VkIndirectCommandsLayoutCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -struct VkPipelineExecutablePropertiesKHR +struct VkGeneratedCommandsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 + 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 VkPipelineExecutableInfoKHR +struct VkGeneratedCommandsMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint pipeline::VkPipeline - executableIndex::UInt32 + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) 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} +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -struct VkPipelineLibraryCreateInfoKHR +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} + inheritedViewportScissor2D::VkBool32 end -struct VkPresentIdKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkPhysicalDevicePresentIdFeaturesKHR +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentId::VkBool32 + texelBufferAlignment::VkBool32 end -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 - -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 - -const VkAccessFlags2KHR = VkAccessFlags2 - -const VkAccessFlagBits2KHR = VkAccessFlagBits2 - -const VkSubmitFlagBitsKHR = VkSubmitFlagBits - -const VkSubmitFlagsKHR = VkSubmitFlags - -const VkMemoryBarrier2KHR = VkMemoryBarrier2 - -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 - -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 - -const VkDependencyInfoKHR = VkDependencyInfo - -const VkSubmitInfo2KHR = VkSubmitInfo2 - -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo - -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo - -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -struct VkQueueFamilyCheckpointProperties2NV +struct VkRenderPassTransformBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + transform::VkSurfaceTransformFlagBitsKHR end -struct VkCheckpointData2NV +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +const VkDeviceMemoryReportFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMemoryReport::VkBool32 end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +struct VkDeviceMemoryReportCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} + +struct VkDeviceDeviceMemoryReportCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR + +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{28, UInt8} end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 8) + f === :format && return Ptr{VkFormat}(x + 24) + return getfield(x, f) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + maxCustomBorderColorSamplers::UInt32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + presentBarrier::VkBool32 end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + presentBarrierSupported::VkBool32 end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 - -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 - -const VkBlitImageInfo2KHR = VkBlitImageInfo2 - -const VkResolveImageInfo2KHR = VkResolveImageInfo2 - -const VkBufferCopy2KHR = VkBufferCopy2 +struct VkSwapchainPresentBarrierCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentBarrierEnable::VkBool32 +end -const VkImageCopy2KHR = VkImageCopy2 +const VkPrivateDataSlotEXT = VkPrivateDataSlot -const VkImageBlit2KHR = VkImageBlit2 +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -const VkImageResolve2KHR = VkImageResolve2 +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +const VkTileShadingRenderPassFlagsQCOM = VkFlags + +struct VkPhysicalDeviceTileShadingFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 +struct VkPhysicalDeviceTileShadingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D +end -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 +struct VkRenderPassTileShadingCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D +end -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkPerTileBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkPerTileEndInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) +end -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) +end -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} +const VkAccelerationStructureKHR = UInt64 -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDescriptorAddressInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +struct VkDescriptorBufferBindingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer 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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} 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 +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) end -const VkDebugReportFlagsEXT = VkFlags +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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} +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkDebugReportCallbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) -const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] +end -# 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} +struct VkDescriptorGetInfoEXT + data::NTuple{20, UInt8} +end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkDescriptorType}(x + 8) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 12) + return getfield(x, f) end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + imageView::VkImageView end -struct VkDebugMarkerObjectNameInfoEXT +struct VkSamplerCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + sampler::VkSampler end -struct VkDebugMarkerObjectTagInfoEXT +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + opaqueCaptureDescriptorData::Ptr{Cvoid} end -struct VkDebugMarkerMarkerInfoEXT +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkDedicatedAllocationBufferCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPipelineRasterizationStateStreamCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) 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} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end -# 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} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# 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 vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags + +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibrary::VkBool32 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 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) +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 end -const VkCuModuleNVX = UInt64 +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 +end -const VkCuFunctionNVX = UInt64 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkCuFunctionCreateInfoNVX +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCuLaunchInfoNVX +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags + +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} + +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{16, UInt8} end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + return getfield(x, f) end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkImageViewHandleInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkImageViewAddressPropertiesNVX +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] +end + +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV 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) +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) end -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end 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 Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +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) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat 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) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end 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 +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] 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) +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkExternalMemoryFeatureFlagsNV = VkFlags +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] 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) +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) end -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures - -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + ycbcr2plane444Formats::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 + fragmentDensityMapDeferred::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPipelineRobustnessCreateInfoEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT + transform::VkSurfaceTransformFlagBitsKHR end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures + +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkConditionalRenderingFlagsEXT = VkFlags +const VkImageCompressionFlagsEXT = VkFlags -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +const VkImageCompressionFixedRateFlagsEXT = VkFlags + +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + imageCompressionControl::VkBool32 end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkImageCompressionControlEXT 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -struct VkPipelineViewportWScalingStateCreateInfoNV +struct VkImageCompressionPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT 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) +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopLayout::VkBool32 end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 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) +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceFaultFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -const VkSurfaceCounterFlagsEXT = VkFlags - -struct VkSurfaceCapabilities2EXT +struct VkDeviceFaultCountsEXT 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 + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize 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) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 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 +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} + +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkDeviceEventInfoEXT +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -struct VkDisplayEventInfoEXT +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkSwapchainCounterCreateInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT + mutableDescriptorType::VkBool32 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 +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} 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 +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkVertexInputBindingDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPresentTimesInfoGOOGLE +struct VkPhysicalDeviceDrmPropertiesEXT 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX +const VkDeviceAddressBindingFlagsEXT = VkFlags + +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 + reportAddressBinding::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 +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPipelineViewportDepthClipControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + negativeOneToOne::VkBool32 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 +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkSubpassShadingPipelineCreateInfoHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + renderPass::VkRenderPass + subpass::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + subpassShading::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) 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 +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + invocationMask::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} + +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +const VkRemoteAddressNV = Ptr{Cvoid} + +struct VkMemoryGetRemoteAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + externalMemoryRDMA::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +const VkPipelineInfoEXT = VkPipelineInfoKHR -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 end -const VkDebugUtilsMessengerEXT = UInt64 - -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -@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 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkFrameBoundaryFlagsEXT = VkFlags -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + frameBoundary::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkFrameBoundaryEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkDebugUtilsMessengerCallbackDataEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT 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} + multisampledRenderToSingleSampled::VkBool32 end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + optimal::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits 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} +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = 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_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = 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_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::VkBool32 end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +struct VkImageViewMinLodCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::Cfloat end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceMultiDrawFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multiDraw::VkBool32 end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceMultiDrawPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiDrawCount::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +struct VkPhysicalDeviceShaderTileImageFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkSampleLocationsInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +const VkMicromapEXT = UInt64 + +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkRenderPassSampleLocationsBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineSampleLocationsStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -struct VkMultisamplePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +const VkMicromapCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} 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 +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] 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 +struct VkMicromapBuildInfoEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 8) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 12) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 16) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 20) + f === :usageCountsCount && return Ptr{UInt32}(x + 28) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 32) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 36) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 48) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 64) + return getfield(x, f) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags - -struct VkPipelineCoverageModulationStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkDrmFormatModifierPropertiesListEXT +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + pVersionData::Ptr{UInt8} end -struct VkImageDrmFormatModifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{28, UInt8} end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkMicromapEXT}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{28, UInt8} end -const VkValidationCacheEXT = UInt64 +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkMicromapEXT}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkValidationCacheCreateFlagsEXT = VkFlags +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkValidationCacheCreateInfoEXT +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end + +struct VkCopyMicromapInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkMicromapBuildSizesInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 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) +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{52, UInt8} end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :indexType && return Ptr{VkIndexType}(x + 8) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :indexStride && return Ptr{VkDeviceSize}(x + 20) + f === :baseTriangle && return Ptr{UInt32}(x + 28) + f === :usageCountsCount && return Ptr{UInt32}(x + 32) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 36) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 40) + f === :micromap && return Ptr{VkMicromapEXT}(x + 44) + return getfield(x, f) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} -@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 +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) 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 +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkPhysicalDeviceShadingRateImagePropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -const VkAccelerationStructureNV = UInt64 - -@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 +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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 = 2 - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 - VK_GEOMETRY_TYPE_AABBS_NV = 1 - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) 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_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 +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) 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 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR - -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -@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 +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) 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_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -const VkGeometryInstanceFlagsKHR = VkFlags - -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR - -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -const VkBuildAccelerationStructureFlagsKHR = VkFlags +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -struct VkRayTracingPipelineCreateInfoNV +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 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 + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 end -struct VkGeometryTrianglesNV +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI 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 + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize end -struct VkGeometryAABBNV +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize + clusterShadingRate::VkBool32 end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} + +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkWriteDescriptorSetAccelerationStructureNV +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -struct VkAccelerationStructureMemoryRequirementsInfoNV +struct VkSamplerBorderColorComponentMappingCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV + components::VkComponentMapping + srgb::VkBool32 end -struct VkPhysicalDeviceRayTracingPropertiesNV +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 + pageableDeviceLocalMemory::VkBool32 end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -const VkAabbPositionsNV = VkAabbPositionsKHR +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} -end +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 +end -# 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} +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 +end -# 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} +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 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) +struct VkRenderPassStripeInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeArea::VkRect2D end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkRenderPassStripeBeginInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkRenderPassStripeSubmitInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapOffset::VkBool32 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 +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D 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 +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} 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 +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize 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) +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectCopy::VkBool32 end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedQueues::VkQueueFlags end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} + +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 + +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + memoryDecompression::VkBool32 end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -struct VkImportMemoryHostPointerInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkMemoryHostPointerPropertiesEXT +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress +end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) - ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 +end -struct VkPipelineCompilerControlCreateInfoAMD +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD + spheres::VkBool32 + linearSweptSpheres::VkBool32 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 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{76, UInt8} end -struct VkCalibratedTimestampInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 20) + f === :radiusFormat && return Ptr{VkFormat}(x + 28) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 32) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 48) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 52) + f === :indexStride && return Ptr{VkDeviceSize}(x + 60) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 68) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 72) + return getfield(x, f) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{68, UInt8} 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) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 20) + f === :radiusFormat && return Ptr{VkFormat}(x + 28) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 32) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 48) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 52) + f === :indexStride && return Ptr{VkDeviceSize}(x + 60) + return getfield(x, f) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV 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 + linearColorAttachment::VkBool32 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 +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionControlSwapchain::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 + maxCommandBufferNestingLevel::UInt32 end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo - -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 + acquireUnmodifiedMemory::VkBool32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT 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 + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 +end -# 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_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFootprint::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) -const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) - ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkQueueFamilyCheckpointPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkCheckpointDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +end + +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -const VkPerformanceConfigurationINTEL = UInt64 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +end -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) 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 +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +end -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 + subpassMergeFeedback::VkBool32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 + disallowMerging::VkBool32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 +end + +struct VkRenderPassCreationFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +const VkTensorARM = UInt64 + +const VkTensorViewARM = UInt64 + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +const VkTensorCreateFlagsARM = VkFlags64 -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +const VkTensorCreateFlagBitsARM = VkFlags64 -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +const VkTensorViewCreateFlagsARM = VkFlags64 -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +const VkTensorViewCreateFlagBitsARM = VkFlags64 -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end +const VkTensorUsageFlagsARM = VkFlags64 -const VkShaderCorePropertiesFlagsAMD = VkFlags +const VkTensorUsageFlagBitsARM = VkFlags64 -struct VkPhysicalDeviceShaderCoreProperties2AMD +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT +struct VkTensorViewCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} + tensor::VkTensorARM end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - memoryPriority::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -struct VkMemoryPriorityAllocateInfoEXT +struct VkWriteDescriptorSetTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - priority::Cfloat + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo - -struct VkBufferDeviceAddressCreateInfoEXT +struct VkTensorMemoryBarrierARM 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 - -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits - -const VkToolPurposeFlagsEXT = VkToolPurposeFlags - -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) -end - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM 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 +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -struct VkValidationFeaturesEXT +struct VkDeviceTensorMemoryRequirementsARM sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + pCreateInfo::Ptr{VkTensorCreateInfoARM} 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 +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} 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 +struct VkCopyTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkCooperativeMatrixPropertiesNV +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + tensor::VkTensorARM end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkExternalTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + externalMemoryProperties::VkExternalMemoryProperties 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) +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBufferTensorDescriptors::VkBool32 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 + +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM +end -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +struct VkTensorCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tensor::VkTensorARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + tensorView::VkTensorViewARM end -struct VkFramebufferMixedSamplesCombinationNV +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) -const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) - ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) +end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) 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 +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -# 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} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +const VkOpticalFlowSessionNV = UInt64 -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +const VkOpticalFlowGridSizeFlagsNV = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + opticalFlow::VkBool32 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +struct VkPhysicalDeviceOpticalFlowPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkOpticalFlowImageFormatInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkOpticalFlowUsageFlagsNV end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkOpticalFlowImageFormatPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkOpticalFlowSessionCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkOpticalFlowSessionCreatePrivateDataInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +struct VkOpticalFlowExecuteInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -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 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) 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) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 -end - -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 + legacyDithering::VkBool32 end -const VkPresentScalingFlagsEXT = VkFlags +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 end -const VkPresentGravityFlagsEXT = VkFlags +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 +end -struct VkSurfacePresentModeEXT +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR + antiLag::VkBool32 end -struct VkSurfacePresentScalingCapabilitiesEXT +struct VkAntiLagPresentationInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkSurfacePresentModeCompatibilityEXT +struct VkAntiLagDataAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} + +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkSwapchainPresentFenceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkSwapchainPresentModesCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} +const VkShaderEXT = UInt64 + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkSwapchainPresentModeInfoEXT +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + shaderObject::VkBool32 end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkReleaseSwapchainImagesInfoEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end -const VkIndirectCommandsLayoutNV = UInt64 +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) end -const VkIndirectStateFlagsNV = VkFlags +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -@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 +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end -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 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkGraphicsShaderGroupCreateInfoNV +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + tileProperties::VkBool32 end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} + +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + amigoProfiling::VkBool32 end -struct VkIndirectCommandsLayoutTokenNV +struct VkAmigoProfilingSubmitInfoSEC 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} + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + multiviewPerViewViewports::VkBool32 end -struct VkGeneratedCommandsInfoNV +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV 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 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 + rayTracingInvocationReorder::VkBool32 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} +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +struct VkPhysicalDeviceCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 +end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{64, UInt8} end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :srcSize && return Ptr{Csize_t}(x + 8) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 20) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 32) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 36) + f === :numRows && return Ptr{UInt32}(x + 40) + f === :numColumns && return Ptr{UInt32}(x + 44) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 48) + f === :srcStride && return Ptr{Csize_t}(x + 52) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 56) + f === :dstStride && return Ptr{Csize_t}(x + 60) + return getfield(x, f) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + extendedSparseAddressSpace::VkBool32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties - -struct VkRenderPassTransformBeginInfoQCOM +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + legacyVertexAttributes::VkBool32 end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D + nativeUnalignedPerformance::VkBool32 end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkDeviceMemoryReportFlagsEXT = VkFlags +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDeviceMemoryReportCallbackDataEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + shaderCoreBuiltins::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 +end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + presentID::UInt64 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + latencyModeEnable::VkBool32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + queueType::VkOutOfBandQueueTypeNV end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkLatencySurfaceCapabilitiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} end -const VkPrivateDataSlotEXT = VkPrivateDataSlot +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) +end + +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) +end + +const VkDataGraphPipelineSessionARM = UInt64 + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 -@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkDataGraphPipelineConstantARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + id::UInt32 + pConstantData::Ptr{Cvoid} end -const VkAccelerationStructureKHR = UInt64 - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkDataGraphPipelineResourceInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkDataGraphPipelineCompilerControlCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + pVendorOptions::Ptr{Cchar} end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkDataGraphPipelineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -struct VkDescriptorAddressInfoEXT +struct VkDataGraphPipelineShaderModuleCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -struct VkDescriptorBufferBindingInfoEXT +struct VkDataGraphPipelineSessionCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + session::VkDataGraphPipelineSessionARM end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkDataGraphPipelineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraphPipeline::VkPipeline end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkDescriptorGetInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + flags::VkDataGraphPipelineDispatchFlagsARM end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 +end + +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkDataGraphProcessingEngineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end - -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags - -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkGraphicsPipelineLibraryCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + multiviewPerViewRenderAreas::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags - -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags - -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR + ycbcrDegamma::VkBool32 end -struct VkAccelerationStructureMotionInfoNV +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +struct VkPhysicalDeviceCubicClampFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicRangeClamp::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopDynamicState::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} + +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPoolOverallocation::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileMemoryHeap::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +struct VkDisplaySurfaceStereoCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkDisplayModeStereoPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + hdmi3DSupported::VkBool32 end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkPhysicalDeviceRawAccessChainsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + shaderRawAccessChains::VkBool32 end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + reservedExternalQueues::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + preferredQueue::VkQueue end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkExternalComputeQueueDataParamsNV sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + deviceIndex::UInt32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + shaderFloat16VectorAtomics::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + shaderReplicatedComposites::VkBool32 end -struct VkImageSubresource2EXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkImageCompressionPropertiesEXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + rayTracingValidation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDevice4444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceFaultFeaturesEXT +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceFaultCountsEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize +struct VkClusterAccelerationStructureClustersBottomLevelInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkClusterAccelerationStructureTriangleClusterInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{28, UInt8} end -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 16) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 20) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 24) + return getfield(x, f) +end -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkMutableDescriptorTypeCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] +end -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkVertexInputBindingDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{136, UInt8} end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 8) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 36) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 44) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 52) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 76) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 100) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 124) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 132) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkDeviceAddressBindingFlagsEXT = VkFlags +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceAddressBindingCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClipControl::VkBool32 +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPipelineViewportDepthClipControlCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress +end -struct VkMemoryGetRemoteAddressInfoNV +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 + allowClusterAccelerationStructure::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -const VkPipelineInfoEXT = VkPipelineInfoKHR +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -struct VkPipelinePropertiesIdentifierEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 + maxPartitionCount::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +struct VkPartitionedAccelerationStructureFlagsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + enablePartitionTranslation::VkBool32 +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkSubpassResolvePerformanceQueryEXT +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} +end + +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - optimal::VkBool32 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -struct VkMultisampledRenderToSingleSampledInfoEXT +struct VkPartitionedAccelerationStructureInstancesInputNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT +struct VkBuildPartitionedAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end +const VkIndirectExecutionSetEXT = UInt64 -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end +const VkIndirectCommandsLayoutEXT = UInt64 -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineColorWriteCreateInfoEXT +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) -end - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR - -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - minLod::VkBool32 + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkImageViewMinLodCreateInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 +struct VkIndirectExecutionSetInfoEXT + data::NTuple{4, UInt8} end -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) -end +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -const VkMicromapEXT = UInt64 - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{16, UInt8} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 8) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 12) + return getfield(x, f) end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -const VkBuildMicromapFlagsEXT = VkFlags +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange +end -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -const VkMicromapCreateFlagsEXT = VkFlags +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT +end -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} +struct VkIndirectCommandsTokenDataEXT + data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) return getfield(x, f) end -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) fptr = getproperty(ptr, f) GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val end ref[] end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{20, UInt8} end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 8) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 12) + f === :offset && return Ptr{UInt32}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT +struct VkIndirectCommandsLayoutCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -struct VkMicromapVersionInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -struct VkCopyMicromapToMemoryInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -struct VkCopyMicromapInfoEXT +struct VkGeneratedCommandsPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + pipeline::VkPipeline end -struct VkMicromapBuildSizesInfoEXT +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT -end - -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 + index::UInt32 + shader::VkShaderEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + imageAlignmentControl::VkBool32 end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedImageAlignmentMask::UInt32 end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkImageAlignmentControlCreateInfoMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + maximumRequestedAlignment::UInt32 end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceDepthClampControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampControl::VkBool32 end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPipelineViewportDepthClampControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + hdrVivid::VkBool32 end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkHdrVividDynamicMetadataHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + pipelineOpacityMicromap::VkBool32 end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + vertexAttributeRobustness::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} - -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapLayered::VkBool32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 + presentMetering::VkBool32 end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkDescriptorSetBindingReferenceVALVE +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 + pipelineCacheIncrementalMode::VkBool32 end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{52, UInt8} end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 20) + f === :maxVertex && return Ptr{UInt32}(x + 28) + f === :indexType && return Ptr{VkIndexType}(x + 32) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 36) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{24, UInt8} end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :stride && return Ptr{VkDeviceSize}(x + 16) + return getfield(x, f) end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] end -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{20, UInt8} end -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + return getfield(x, f) end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - indirectCopy::VkBool32 +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{52, UInt8} end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 +struct VkAccelerationStructureGeometryKHR + data::NTuple{68, UInt8} end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 8) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 12) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 64) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} - -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 16) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 20) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 28) + f === :geometryCount && return Ptr{UInt32}(x + 36) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 40) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 44) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 48) + return getfield(x, f) end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkImageViewSampleWeightCreateInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkAccelerationStructureCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +struct VkWriteDescriptorSetAccelerationStructureKHR sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 -end - -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp -end - -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{28, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{28, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = 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_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) -end +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) -end +# 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} -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) -end +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationControlEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disallowMerging::VkBool32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 -end +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const wl_display = Cvoid -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_surface = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV = UInt64 - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 0 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +const VK_NULL_HANDLE = Culonglong(0) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{52, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 0 +const VK_KHR_external_fence_fd = 1 -const VK_NULL_HANDLE = Culonglong(0) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20613,13 +32520,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20691,7 +32598,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20797,7 +32704,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20815,16 +32722,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21067,7 +32980,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21191,7 +33104,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21261,6 +33174,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21305,10 +33230,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21369,6 +33300,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21413,7 +33356,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21443,7 +33386,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21495,9 +33438,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21519,6 +33468,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21549,7 +33504,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21569,6 +33524,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21583,7 +33544,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21599,6 +33560,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21617,9 +33598,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21635,6 +33622,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21659,6 +33658,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21677,6 +33688,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21699,7 +33716,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21709,6 +33726,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21733,12 +33762,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21751,6 +33804,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/i686-linux-musl.jl b/lib/i686-linux-musl.jl index 09b9ebf..9a92092 100644 --- a/lib/i686-linux-musl.jl +++ b/lib/i686-linux-musl.jl @@ -111,6 +111,7 @@ const VkCommandPool = UInt64 VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -125,21 +126,26 @@ const VkCommandPool = UInt64 VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -360,6 +366,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -410,8 +466,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -419,10 +504,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -434,9 +515,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -451,7 +529,6 @@ end 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 @@ -464,6 +541,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -472,6 +550,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -507,6 +586,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -572,7 +653,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -580,15 +660,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -596,6 +670,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -611,14 +687,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -643,11 +722,7 @@ end 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 @@ -655,16 +730,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -678,11 +747,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -692,8 +762,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -706,8 +794,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -743,8 +829,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -785,6 +869,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -799,6 +885,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -811,26 +899,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -839,6 +945,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -852,19 +982,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -873,7 +1233,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -894,6 +1253,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -907,6 +1269,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -946,6 +1309,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -965,11 +1329,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -984,6 +1355,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -997,11 +1371,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1027,10 +1428,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1038,6 +1442,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1064,6 +1499,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1071,10 +1507,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1132,7 +1575,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1140,12 +1591,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1403,6 +1856,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1411,7 +1866,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1466,6 +1936,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1503,6 +1976,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1655,20 +2129,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1679,6 +2155,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1699,6 +2176,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1714,6 +2194,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1837,7 +2318,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1847,7 +2330,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1866,6 +2351,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1879,15 +2365,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1919,11 +2409,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -1982,6 +2474,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2017,13 +2511,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2051,16 +2547,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2076,6 +2581,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2104,7 +2610,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,20 +2652,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2213,6 +2727,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2233,6 +2752,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2259,11 +2779,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2287,6 +2810,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2311,8 +2835,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2321,6 +2845,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2332,15 +2858,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2452,6 +2979,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2463,10 +2992,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2486,6 +3018,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,6 +3037,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2513,6 +3048,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3646,6 +4182,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3687,6 +4231,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3701,9 +4253,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5304,6 +5889,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5318,7 +5904,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5342,6 +5932,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5368,6 +5959,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6282,6 +6877,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6311,6 +6908,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6331,11 +6929,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7120,9 +7720,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7527,16 +8130,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{60, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :imageView && return Ptr{VkImageView}(x + 8) + f === :imageLayout && return Ptr{VkImageLayout}(x + 16) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 20) + f === :resolveImageView && return Ptr{VkImageView}(x + 24) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 32) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 36) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 40) + f === :clearValue && return Ptr{VkClearValue}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8070,2834 +8713,3739 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkMemoryUnmapFlags = VkFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 end -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -const VkSwapchainKHR = UInt64 +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end -@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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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} +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource +end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) - ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 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) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior end -const VkDisplayKHR = UInt64 - -const VkDisplayModeKHR = UInt64 - -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR = UInt64 +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionParametersKHR = UInt64 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} +@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 - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags + colorSpace::VkColorSpaceKHR end -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView +# 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 -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -struct VkVideoSessionMemoryRequirementsKHR +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, 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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + 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} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements + 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 VkBindVideoSessionMemoryInfoKHR +struct VkPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -struct VkVideoSessionCreateInfoKHR +struct VkImageSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} + swapchain::VkSwapchainKHR end -struct VkVideoSessionParametersCreateInfoKHR +struct VkBindImageMemorySwapchainInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -struct VkVideoSessionParametersUpdateInfoKHR +struct VkAcquireNextImageInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -struct VkVideoBeginCodingInfoKHR +struct VkDeviceGroupPresentCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -struct VkVideoEndCodingInfoKHR +struct VkDeviceGroupPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -struct VkVideoCodingControlInfoKHR +struct VkDeviceGroupSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR + modes::VkDeviceGroupPresentModeFlagsKHR end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} +# 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_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = 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_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = 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_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = 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_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = 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 vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +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 -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} -const VkVideoDecodeUsageFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} -const VkVideoDecodeFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +# 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 -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264AspectRatioIdc::UInt32 begin - 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 - STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 -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} -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} -end +const VkVideoSessionKHR = UInt64 -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +const VkVideoSessionParametersKHR = UInt64 + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 end -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +const VkVideoComponentBitDepthFlagsKHR = VkFlags -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} -end +const VkVideoCapabilityFlagsKHR = VkFlags -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end +const VkVideoSessionCreateFlagsKHR = VkFlags -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] -end +const VkVideoSessionParametersCreateFlagsKHR = VkFlags -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} -end +const VkVideoBeginCodingFlagsKHR = VkFlags -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties end -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} end -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end - -function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end - -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] -end - -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} -end - -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} -end - -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) -end - -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end - -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end - -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] -end - -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements end -@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags - -struct VkVideoDecodeH264ProfileInfoKHR +struct VkVideoSessionCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkVideoSessionParametersCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkVideoSessionParametersUpdateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + updateSequenceCount::UInt32 end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkVideoBeginCodingInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} end -struct VkVideoDecodeH264PictureInfoKHR +struct VkVideoEndCodingInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} + flags::VkVideoEndCodingFlagsKHR end -struct VkVideoDecodeH264DpbSlotInfoKHR +struct VkVideoCodingControlInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + flags::VkVideoCodingControlFlagsKHR end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} -struct VkRenderingFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D -end +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} -struct VkRenderingFragmentDensityMapAttachmentInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} -struct VkAttachmentSampleCountInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} -struct VkMultiviewPerViewAttributesInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} - -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) + ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) + ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) 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) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) + ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) + ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) + ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) 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) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) 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) +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags +const VkVideoDecodeUsageFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +const VkVideoDecodeFlagsKHR = VkFlags -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties - -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags - -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits - -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags - -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits - -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties - -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +@cenum StdVideoH264AspectRatioIdc::UInt32 begin + 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 + STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end -struct VkImportMemoryFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 end -struct VkMemoryFdPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 end -struct VkMemoryGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags +struct StdVideoH264SequenceParameterSetVui + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end -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) +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) 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 +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkSemaphoreGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end 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) +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct StdVideoH264SequenceParameterSet + data::NTuple{76, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 68) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 72) + return getfield(x, f) end -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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} +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +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) +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +struct StdVideoH264PictureParameterSet + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPresentRegionsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) -const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end -# 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 Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end -const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end -const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end -const VkAttachmentDescription2KHR = VkAttachmentDescription2 +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -const VkAttachmentReference2KHR = VkAttachmentReference2 +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkSubpassDescription2KHR = VkSubpassDescription2 +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkSubpassDependency2KHR = VkSubpassDependency2 +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end -const VkSubpassBeginInfoKHR = VkSubpassBeginInfo +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end -const VkSubpassEndInfoKHR = VkSubpassEndInfo +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +struct StdVideoEncodeH264ReferenceListsInfo + data::NTuple{92, UInt8} end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 84) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 88) + return getfield(x, f) end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] end -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags +struct StdVideoEncodeH264PictureInfo + data::NTuple{28, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end -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) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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 +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +struct StdVideoEncodeH264SliceHeader + data::NTuple{28, UInt8} end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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 +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) 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 +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] end -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR end -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 end -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR +struct VkVideoEncodeH264QualityLevelPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +struct VkVideoEncodeH264SessionCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc end -struct VkPerformanceCounterKHR +struct VkVideoEncodeH264SessionParametersAddInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} end -struct VkPerformanceCounterDescriptionKHR +struct VkVideoEncodeH264SessionParametersCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkVideoEncodeH264SessionParametersGetInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} -end - -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 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) +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 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) +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} end -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} - -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} end -struct VkAcquireProfilingLockInfoKHR +struct VkVideoEncodeH264ProfileInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + stdProfileIdc::StdVideoH264ProfileIdc end -struct VkPerformanceQuerySubmitInfoKHR +struct VkVideoEncodeH264RateControlInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::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) +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 end -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 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 +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +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 -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +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 -# 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) +struct StdVideoH265HrdFlags + data::NTuple{4, UInt8} end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] end -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +struct StdVideoH265HrdParameters + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 44) + return getfield(x, f) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] end -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} end -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] end -const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements - -const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end -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) +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo - -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion - -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkChromaLocationKHR = VkChromaLocation +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +struct StdVideoH265VideoParameterSet + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 28) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 32) + return getfield(x, f) +end -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +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 -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct StdVideoH265SpsVuiFlags + data::NTuple{4, UInt8} end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} +struct StdVideoH265SequenceParameterSetVui + data::NTuple{52, UInt8} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] 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 - -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, 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 - -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 -end - -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 - -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 +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} end -struct StdVideoH265HrdFlags +struct StdVideoH265SpsFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, r) +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -10916,7 +12464,7 @@ function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -10938,52 +12486,63 @@ function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) end end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -struct StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] end -struct StdVideoH265VpsFlags +struct StdVideoH265ShortTermRefPicSetFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, r) +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11002,7 +12561,7 @@ function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11024,32 +12583,241 @@ function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) end end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign ref[] end -struct StdVideoH265ProfileTierLevelFlags +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{84, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 60) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 64) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 68) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 76) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, r) +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11068,7 +12836,7 @@ function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11090,76 +12858,201 @@ function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, end end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag ref[] end -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc +struct StdVideoH265PictureParameterSet + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 132) + return getfield(x, f) end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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} +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct StdVideoH265SpsVuiFlags +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, r) +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11178,7 +13071,7 @@ function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11200,104 +13093,110 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) end end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved ref[] end -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{28, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) end -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct StdVideoH265SpsFlags +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11316,7 +13215,7 @@ function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11338,55 +13237,91 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) end end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved ref[] end -struct StdVideoH265ShortTermRefPicSetFlags +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11405,7 +13340,7 @@ function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11427,120 +13362,111 @@ function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbo end end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 28) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 32) + return getfield(x, f) end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct StdVideoH265PpsFlags +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, r) +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, r) fptr = getproperty(ptr, f) begin if fptr isa Ptr @@ -11559,7 +13485,7 @@ function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) end end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr unsafe_store!(getproperty(x, f), v) @@ -11581,8969 +13507,18950 @@ function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) end end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId ref[] end -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR = UInt64 + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{532, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 8) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 264) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 520) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 524) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR = UInt64 + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 20) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 24) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 76) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 80) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 84) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 88) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 92) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 96) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 100) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{116, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 84) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 92) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 96) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 100) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 104) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 108) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 112) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{44, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 36) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX = UInt64 + +const VkCuFunctionNVX = UInt64 + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, 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 + +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 + +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + 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 + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +struct VkMultiviewPerViewAttributesInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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 + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + 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 vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, 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 vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, 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 vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, 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 vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end + +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures + +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties + +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock + +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo + +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 vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, 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 + +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD + +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 + +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +end + +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +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 + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, 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 vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, 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 vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, 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 vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, 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 vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, 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 vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, 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 vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, 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 vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureNV = UInt64 + +@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 = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + 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_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 +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 VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 +end + +@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_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + 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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + 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 VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} +end + +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), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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 , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * 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 vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, 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 vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, 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 vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, 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 vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, 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 vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, 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 vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, 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 + +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo + +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 + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, 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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, 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 + +const VkTimeDomainEXT = VkTimeDomainKHR + +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, 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 + +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures + +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits + +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags + +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo + +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback + +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + +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 vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +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_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, 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 + +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 +end + +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, 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 vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), 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 + +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end + ref[] +end + +struct VkPerformanceValueINTEL + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data + ref[] +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 vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, 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 vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, 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 + +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures + +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties + +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo + +@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 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::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 + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags + +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +end + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), 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_SHADER_VALIDATION_CACHE_EXT = 7 + 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 + +const VkComponentTypeNV = VkComponentTypeKHR + +const VkScopeNV = VkScopeKHR + +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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, 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 + +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end + +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +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 + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkLineRasterizationModeEXT = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo + +# 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 + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, 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 + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +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} -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +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 StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkVideoDecodeH265PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -struct VkVideoDecodeH265DpbSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkQueueFamilyGlobalPriorityPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -const VkDriverIdKHR = VkDriverId +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 -const VkConformanceVersionKHR = VkConformanceVersion +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -const VkSemaphoreTypeKHR = VkSemaphoreType +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkImageSubresource2EXT = VkImageSubresource2 -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = 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_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures - -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT 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 + minPlacedMemoryMapAlignment::VkDeviceSize end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end - -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end - -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) + pPlacedAddress::Ptr{Cvoid} end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout - -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -struct VkPhysicalDevicePresentWaitFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentWait::VkBool32 -end +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) -end +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) -end +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +const VkIndirectCommandsLayoutNV = UInt64 -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkDeferredOperationKHR = UInt64 - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} - -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +const VkIndirectStateFlagsNV = VkFlags -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +@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 -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +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 -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 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 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize end -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR +struct VkIndirectCommandsLayoutTokenNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 + 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 VkPipelineInfoKHR +struct VkIndirectCommandsLayoutCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -struct VkPipelineExecutablePropertiesKHR +struct VkGeneratedCommandsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 + 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 VkPipelineExecutableInfoKHR +struct VkGeneratedCommandsMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint pipeline::VkPipeline - executableIndex::UInt32 + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) 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} +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -struct VkPipelineLibraryCreateInfoKHR +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} + inheritedViewportScissor2D::VkBool32 end -struct VkPresentIdKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkPhysicalDevicePresentIdFeaturesKHR +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentId::VkBool32 + texelBufferAlignment::VkBool32 end -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 - -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 - -const VkAccessFlags2KHR = VkAccessFlags2 - -const VkAccessFlagBits2KHR = VkAccessFlagBits2 - -const VkSubmitFlagBitsKHR = VkSubmitFlagBits - -const VkSubmitFlagsKHR = VkSubmitFlags - -const VkMemoryBarrier2KHR = VkMemoryBarrier2 - -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 - -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 - -const VkDependencyInfoKHR = VkDependencyInfo - -const VkSubmitInfo2KHR = VkSubmitInfo2 - -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo - -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo - -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -struct VkQueueFamilyCheckpointProperties2NV +struct VkRenderPassTransformBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + transform::VkSurfaceTransformFlagBitsKHR end -struct VkCheckpointData2NV +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +const VkDeviceMemoryReportFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMemoryReport::VkBool32 end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +struct VkDeviceMemoryReportCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} + +struct VkDeviceDeviceMemoryReportCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR + +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{28, UInt8} end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 8) + f === :format && return Ptr{VkFormat}(x + 24) + return getfield(x, f) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + maxCustomBorderColorSamplers::UInt32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + presentBarrier::VkBool32 end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + presentBarrierSupported::VkBool32 end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 - -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 - -const VkBlitImageInfo2KHR = VkBlitImageInfo2 - -const VkResolveImageInfo2KHR = VkResolveImageInfo2 - -const VkBufferCopy2KHR = VkBufferCopy2 +struct VkSwapchainPresentBarrierCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentBarrierEnable::VkBool32 +end -const VkImageCopy2KHR = VkImageCopy2 +const VkPrivateDataSlotEXT = VkPrivateDataSlot -const VkImageBlit2KHR = VkImageBlit2 +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -const VkImageResolve2KHR = VkImageResolve2 +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +const VkTileShadingRenderPassFlagsQCOM = VkFlags + +struct VkPhysicalDeviceTileShadingFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 +struct VkPhysicalDeviceTileShadingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D +end -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 +struct VkRenderPassTileShadingCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D +end -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkPerTileBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkPerTileEndInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) +end -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) +end -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} +const VkAccelerationStructureKHR = UInt64 -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDescriptorAddressInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +struct VkDescriptorBufferBindingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer 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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} 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 +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) end -const VkDebugReportFlagsEXT = VkFlags +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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} +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkDebugReportCallbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) -const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] +end -# 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} +struct VkDescriptorGetInfoEXT + data::NTuple{20, UInt8} +end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkDescriptorType}(x + 8) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 12) + return getfield(x, f) end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + imageView::VkImageView end -struct VkDebugMarkerObjectNameInfoEXT +struct VkSamplerCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + sampler::VkSampler end -struct VkDebugMarkerObjectTagInfoEXT +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + opaqueCaptureDescriptorData::Ptr{Cvoid} end -struct VkDebugMarkerMarkerInfoEXT +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkDedicatedAllocationBufferCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPipelineRasterizationStateStreamCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) 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} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end -# 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} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# 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 vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags + +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibrary::VkBool32 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 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) +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 end -const VkCuModuleNVX = UInt64 +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 +end -const VkCuFunctionNVX = UInt64 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkCuFunctionCreateInfoNVX +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCuLaunchInfoNVX +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags + +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} + +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{16, UInt8} end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + return getfield(x, f) end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkImageViewHandleInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkImageViewAddressPropertiesNVX +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] +end + +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV 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) +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) end -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end 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 Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +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) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat 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) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end 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 +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] 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) +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkExternalMemoryFeatureFlagsNV = VkFlags +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] 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) +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) end -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures - -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + ycbcr2plane444Formats::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 + fragmentDensityMapDeferred::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPipelineRobustnessCreateInfoEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT + transform::VkSurfaceTransformFlagBitsKHR end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures + +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkConditionalRenderingFlagsEXT = VkFlags +const VkImageCompressionFlagsEXT = VkFlags -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +const VkImageCompressionFixedRateFlagsEXT = VkFlags + +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + imageCompressionControl::VkBool32 end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkImageCompressionControlEXT 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -struct VkPipelineViewportWScalingStateCreateInfoNV +struct VkImageCompressionPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT 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) +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopLayout::VkBool32 end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 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) +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceFaultFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -const VkSurfaceCounterFlagsEXT = VkFlags - -struct VkSurfaceCapabilities2EXT +struct VkDeviceFaultCountsEXT 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 + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize 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) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 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 +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} + +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkDeviceEventInfoEXT +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -struct VkDisplayEventInfoEXT +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkSwapchainCounterCreateInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT + mutableDescriptorType::VkBool32 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 +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} 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 +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkVertexInputBindingDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPresentTimesInfoGOOGLE +struct VkPhysicalDeviceDrmPropertiesEXT 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX +const VkDeviceAddressBindingFlagsEXT = VkFlags + +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 + reportAddressBinding::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 +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPipelineViewportDepthClipControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + negativeOneToOne::VkBool32 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 +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkSubpassShadingPipelineCreateInfoHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + renderPass::VkRenderPass + subpass::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + subpassShading::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) 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 +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + invocationMask::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} + +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +const VkRemoteAddressNV = Ptr{Cvoid} + +struct VkMemoryGetRemoteAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + externalMemoryRDMA::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +const VkPipelineInfoEXT = VkPipelineInfoKHR -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 end -const VkDebugUtilsMessengerEXT = UInt64 - -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -@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 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkFrameBoundaryFlagsEXT = VkFlags -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + frameBoundary::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkFrameBoundaryEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkDebugUtilsMessengerCallbackDataEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT 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} + multisampledRenderToSingleSampled::VkBool32 end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + optimal::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits 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} +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = 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_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = 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_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::VkBool32 end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +struct VkImageViewMinLodCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::Cfloat end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceMultiDrawFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multiDraw::VkBool32 end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceMultiDrawPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiDrawCount::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +struct VkPhysicalDeviceShaderTileImageFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkSampleLocationsInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +const VkMicromapEXT = UInt64 + +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkRenderPassSampleLocationsBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineSampleLocationsStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -struct VkMultisamplePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +const VkMicromapCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} 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 +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] 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 +struct VkMicromapBuildInfoEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 8) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 12) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 16) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 20) + f === :usageCountsCount && return Ptr{UInt32}(x + 28) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 32) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 36) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 48) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 64) + return getfield(x, f) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags - -struct VkPipelineCoverageModulationStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkDrmFormatModifierPropertiesListEXT +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + pVersionData::Ptr{UInt8} end -struct VkImageDrmFormatModifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{28, UInt8} end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkMicromapEXT}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{28, UInt8} end -const VkValidationCacheEXT = UInt64 +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkMicromapEXT}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkValidationCacheCreateFlagsEXT = VkFlags +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkValidationCacheCreateInfoEXT +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end + +struct VkCopyMicromapInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkMicromapBuildSizesInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 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) +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{52, UInt8} end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :indexType && return Ptr{VkIndexType}(x + 8) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :indexStride && return Ptr{VkDeviceSize}(x + 20) + f === :baseTriangle && return Ptr{UInt32}(x + 28) + f === :usageCountsCount && return Ptr{UInt32}(x + 32) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 36) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 40) + f === :micromap && return Ptr{VkMicromapEXT}(x + 44) + return getfield(x, f) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} -@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 +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) 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 +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkPhysicalDeviceShadingRateImagePropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -const VkAccelerationStructureNV = UInt64 - -@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 +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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 = 2 - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 - VK_GEOMETRY_TYPE_AABBS_NV = 1 - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) 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_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 +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) 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 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR - -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -@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 +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) 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_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -const VkGeometryInstanceFlagsKHR = VkFlags - -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR - -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -const VkBuildAccelerationStructureFlagsKHR = VkFlags +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -struct VkRayTracingPipelineCreateInfoNV +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 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 + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 end -struct VkGeometryTrianglesNV +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI 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 + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize end -struct VkGeometryAABBNV +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize + clusterShadingRate::VkBool32 end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} + +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkWriteDescriptorSetAccelerationStructureNV +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -struct VkAccelerationStructureMemoryRequirementsInfoNV +struct VkSamplerBorderColorComponentMappingCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV + components::VkComponentMapping + srgb::VkBool32 end -struct VkPhysicalDeviceRayTracingPropertiesNV +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 + pageableDeviceLocalMemory::VkBool32 end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -const VkAabbPositionsNV = VkAabbPositionsKHR +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} -end +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 +end -# 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} +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 +end -# 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} +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 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) +struct VkRenderPassStripeInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeArea::VkRect2D end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkRenderPassStripeBeginInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkRenderPassStripeSubmitInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapOffset::VkBool32 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 +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D 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 +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} 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 +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize 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) +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectCopy::VkBool32 end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedQueues::VkQueueFlags end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} + +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 + +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + memoryDecompression::VkBool32 end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -struct VkImportMemoryHostPointerInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkMemoryHostPointerPropertiesEXT +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress +end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) - ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 +end -struct VkPipelineCompilerControlCreateInfoAMD +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD + spheres::VkBool32 + linearSweptSpheres::VkBool32 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 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{76, UInt8} end -struct VkCalibratedTimestampInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 20) + f === :radiusFormat && return Ptr{VkFormat}(x + 28) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 32) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 48) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 52) + f === :indexStride && return Ptr{VkDeviceSize}(x + 60) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 68) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 72) + return getfield(x, f) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{68, UInt8} 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) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 20) + f === :radiusFormat && return Ptr{VkFormat}(x + 28) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 32) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 48) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 52) + f === :indexStride && return Ptr{VkDeviceSize}(x + 60) + return getfield(x, f) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV 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 + linearColorAttachment::VkBool32 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 +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionControlSwapchain::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 + maxCommandBufferNestingLevel::UInt32 end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo - -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 + acquireUnmodifiedMemory::VkBool32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT 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 + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 +end -# 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_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFootprint::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) -const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) - ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkQueueFamilyCheckpointPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkCheckpointDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +end + +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -const VkPerformanceConfigurationINTEL = UInt64 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +end -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) 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 +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +end -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 + subpassMergeFeedback::VkBool32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 + disallowMerging::VkBool32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 +end + +struct VkRenderPassCreationFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +const VkTensorARM = UInt64 + +const VkTensorViewARM = UInt64 + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +const VkTensorCreateFlagsARM = VkFlags64 -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +const VkTensorCreateFlagBitsARM = VkFlags64 -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +const VkTensorViewCreateFlagsARM = VkFlags64 -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +const VkTensorViewCreateFlagBitsARM = VkFlags64 -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end +const VkTensorUsageFlagsARM = VkFlags64 -const VkShaderCorePropertiesFlagsAMD = VkFlags +const VkTensorUsageFlagBitsARM = VkFlags64 -struct VkPhysicalDeviceShaderCoreProperties2AMD +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT +struct VkTensorViewCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} + tensor::VkTensorARM end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - memoryPriority::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -struct VkMemoryPriorityAllocateInfoEXT +struct VkWriteDescriptorSetTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - priority::Cfloat + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo - -struct VkBufferDeviceAddressCreateInfoEXT +struct VkTensorMemoryBarrierARM 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 - -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits - -const VkToolPurposeFlagsEXT = VkToolPurposeFlags - -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) -end - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM 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 +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -struct VkValidationFeaturesEXT +struct VkDeviceTensorMemoryRequirementsARM sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + pCreateInfo::Ptr{VkTensorCreateInfoARM} 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 +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} 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 +struct VkCopyTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkCooperativeMatrixPropertiesNV +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + tensor::VkTensorARM end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkExternalTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + externalMemoryProperties::VkExternalMemoryProperties 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) +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBufferTensorDescriptors::VkBool32 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 + +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM +end -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +struct VkTensorCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tensor::VkTensorARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + tensorView::VkTensorViewARM end -struct VkFramebufferMixedSamplesCombinationNV +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) -const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) - ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) +end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) 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 +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -# 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} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +const VkOpticalFlowSessionNV = UInt64 -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +const VkOpticalFlowGridSizeFlagsNV = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + opticalFlow::VkBool32 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +struct VkPhysicalDeviceOpticalFlowPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkOpticalFlowImageFormatInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkOpticalFlowUsageFlagsNV end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkOpticalFlowImageFormatPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkOpticalFlowSessionCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkOpticalFlowSessionCreatePrivateDataInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +struct VkOpticalFlowExecuteInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -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 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) 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) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 -end - -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 + legacyDithering::VkBool32 end -const VkPresentScalingFlagsEXT = VkFlags +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 end -const VkPresentGravityFlagsEXT = VkFlags +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 +end -struct VkSurfacePresentModeEXT +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR + antiLag::VkBool32 end -struct VkSurfacePresentScalingCapabilitiesEXT +struct VkAntiLagPresentationInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkSurfacePresentModeCompatibilityEXT +struct VkAntiLagDataAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} + +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkSwapchainPresentFenceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkSwapchainPresentModesCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} +const VkShaderEXT = UInt64 + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkSwapchainPresentModeInfoEXT +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + shaderObject::VkBool32 end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkReleaseSwapchainImagesInfoEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end -const VkIndirectCommandsLayoutNV = UInt64 +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) end -const VkIndirectStateFlagsNV = VkFlags +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -@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 +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end -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 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkGraphicsShaderGroupCreateInfoNV +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + tileProperties::VkBool32 end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} + +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + amigoProfiling::VkBool32 end -struct VkIndirectCommandsLayoutTokenNV +struct VkAmigoProfilingSubmitInfoSEC 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} + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + multiviewPerViewViewports::VkBool32 end -struct VkGeneratedCommandsInfoNV +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV 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 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 + rayTracingInvocationReorder::VkBool32 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} +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +struct VkPhysicalDeviceCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 +end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{64, UInt8} end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :srcSize && return Ptr{Csize_t}(x + 8) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 20) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 32) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 36) + f === :numRows && return Ptr{UInt32}(x + 40) + f === :numColumns && return Ptr{UInt32}(x + 44) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 48) + f === :srcStride && return Ptr{Csize_t}(x + 52) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 56) + f === :dstStride && return Ptr{Csize_t}(x + 60) + return getfield(x, f) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + extendedSparseAddressSpace::VkBool32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties - -struct VkRenderPassTransformBeginInfoQCOM +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + legacyVertexAttributes::VkBool32 end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D + nativeUnalignedPerformance::VkBool32 end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkDeviceMemoryReportFlagsEXT = VkFlags +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDeviceMemoryReportCallbackDataEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + shaderCoreBuiltins::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 +end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + presentID::UInt64 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + latencyModeEnable::VkBool32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + queueType::VkOutOfBandQueueTypeNV end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkLatencySurfaceCapabilitiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} end -const VkPrivateDataSlotEXT = VkPrivateDataSlot +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) +end + +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) +end + +const VkDataGraphPipelineSessionARM = UInt64 + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 -@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkDataGraphPipelineConstantARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + id::UInt32 + pConstantData::Ptr{Cvoid} end -const VkAccelerationStructureKHR = UInt64 - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkDataGraphPipelineResourceInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkDataGraphPipelineCompilerControlCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + pVendorOptions::Ptr{Cchar} end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkDataGraphPipelineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -struct VkDescriptorAddressInfoEXT +struct VkDataGraphPipelineShaderModuleCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -struct VkDescriptorBufferBindingInfoEXT +struct VkDataGraphPipelineSessionCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + session::VkDataGraphPipelineSessionARM end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkDataGraphPipelineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraphPipeline::VkPipeline end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkDescriptorGetInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + flags::VkDataGraphPipelineDispatchFlagsARM end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 +end + +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkDataGraphProcessingEngineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end - -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags - -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkGraphicsPipelineLibraryCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + multiviewPerViewRenderAreas::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags - -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags - -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR + ycbcrDegamma::VkBool32 end -struct VkAccelerationStructureMotionInfoNV +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +struct VkPhysicalDeviceCubicClampFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicRangeClamp::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopDynamicState::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} + +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPoolOverallocation::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileMemoryHeap::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +struct VkDisplaySurfaceStereoCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkDisplayModeStereoPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + hdmi3DSupported::VkBool32 end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkPhysicalDeviceRawAccessChainsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + shaderRawAccessChains::VkBool32 end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + reservedExternalQueues::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + preferredQueue::VkQueue end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkExternalComputeQueueDataParamsNV sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + deviceIndex::UInt32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + shaderFloat16VectorAtomics::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + shaderReplicatedComposites::VkBool32 end -struct VkImageSubresource2EXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkImageCompressionPropertiesEXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + rayTracingValidation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDevice4444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceFaultFeaturesEXT +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceFaultCountsEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize +struct VkClusterAccelerationStructureClustersBottomLevelInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkClusterAccelerationStructureTriangleClusterInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{28, UInt8} end -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 16) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 20) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 24) + return getfield(x, f) +end -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkMutableDescriptorTypeCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] +end -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkVertexInputBindingDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{136, UInt8} end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 8) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 36) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 44) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 52) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 76) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 100) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 124) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 132) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkDeviceAddressBindingFlagsEXT = VkFlags +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceAddressBindingCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClipControl::VkBool32 +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPipelineViewportDepthClipControlCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress +end -struct VkMemoryGetRemoteAddressInfoNV +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 + allowClusterAccelerationStructure::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -const VkPipelineInfoEXT = VkPipelineInfoKHR +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -struct VkPipelinePropertiesIdentifierEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 + maxPartitionCount::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +struct VkPartitionedAccelerationStructureFlagsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + enablePartitionTranslation::VkBool32 +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkSubpassResolvePerformanceQueryEXT +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} +end + +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - optimal::VkBool32 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -struct VkMultisampledRenderToSingleSampledInfoEXT +struct VkPartitionedAccelerationStructureInstancesInputNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT +struct VkBuildPartitionedAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end +const VkIndirectExecutionSetEXT = UInt64 -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end +const VkIndirectCommandsLayoutEXT = UInt64 -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineColorWriteCreateInfoEXT +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) -end - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR - -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - minLod::VkBool32 + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkImageViewMinLodCreateInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 +struct VkIndirectExecutionSetInfoEXT + data::NTuple{4, UInt8} end -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) -end +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -const VkMicromapEXT = UInt64 - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{16, UInt8} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 8) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 12) + return getfield(x, f) end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -const VkBuildMicromapFlagsEXT = VkFlags +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange +end -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -const VkMicromapCreateFlagsEXT = VkFlags +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT +end -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} +struct VkIndirectCommandsTokenDataEXT + data::NTuple{4, UInt8} end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) return getfield(x, f) end -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) fptr = getproperty(ptr, f) GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val end ref[] end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{20, UInt8} end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 8) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 12) + f === :offset && return Ptr{UInt32}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT +struct VkIndirectCommandsLayoutCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -struct VkMicromapVersionInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -struct VkCopyMicromapToMemoryInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -struct VkCopyMicromapInfoEXT +struct VkGeneratedCommandsPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + pipeline::VkPipeline end -struct VkMicromapBuildSizesInfoEXT +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT -end - -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 + index::UInt32 + shader::VkShaderEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + imageAlignmentControl::VkBool32 end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedImageAlignmentMask::UInt32 end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkImageAlignmentControlCreateInfoMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + maximumRequestedAlignment::UInt32 end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceDepthClampControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampControl::VkBool32 end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPipelineViewportDepthClampControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + hdrVivid::VkBool32 end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkHdrVividDynamicMetadataHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + pipelineOpacityMicromap::VkBool32 end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + vertexAttributeRobustness::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} - -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapLayered::VkBool32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 + presentMetering::VkBool32 end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkDescriptorSetBindingReferenceVALVE +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 + pipelineCacheIncrementalMode::VkBool32 end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{52, UInt8} end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 20) + f === :maxVertex && return Ptr{UInt32}(x + 28) + f === :indexType && return Ptr{VkIndexType}(x + 32) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 36) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{24, UInt8} end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :stride && return Ptr{VkDeviceSize}(x + 16) + return getfield(x, f) end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] end -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{20, UInt8} end -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 12) + return getfield(x, f) end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - indirectCopy::VkBool32 +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{52, UInt8} end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 +struct VkAccelerationStructureGeometryKHR + data::NTuple{68, UInt8} end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 8) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 12) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 64) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} - -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 16) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 20) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 28) + f === :geometryCount && return Ptr{UInt32}(x + 36) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 40) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 44) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 48) + return getfield(x, f) end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkImageViewSampleWeightCreateInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkAccelerationStructureCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +struct VkWriteDescriptorSetAccelerationStructureKHR sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 -end - -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp -end - -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{28, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{28, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = 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_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) -end +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) -end +# 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} -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) -end +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationControlEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disallowMerging::VkBool32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 -end +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const wl_display = Cvoid -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_surface = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV = UInt64 - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 0 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +const VK_NULL_HANDLE = Culonglong(0) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{52, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 0 +const VK_KHR_external_fence_fd = 1 -const VK_NULL_HANDLE = Culonglong(0) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20613,13 +32520,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20691,7 +32598,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20797,7 +32704,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20815,16 +32722,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21067,7 +32980,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21191,7 +33104,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21261,6 +33174,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21305,10 +33230,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21369,6 +33300,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21413,7 +33356,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21443,7 +33386,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21495,9 +33438,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21519,6 +33468,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21549,7 +33504,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21569,6 +33524,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21583,7 +33544,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21599,6 +33560,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21617,9 +33598,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21635,6 +33622,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21659,6 +33658,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21677,6 +33688,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21699,7 +33716,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21709,6 +33726,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21733,12 +33762,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21751,6 +33804,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/i686-w64-mingw32.jl b/lib/i686-w64-mingw32.jl index 8b409c1..f10b086 100644 --- a/lib/i686-w64-mingw32.jl +++ b/lib/i686-w64-mingw32.jl @@ -131,6 +131,7 @@ const VkCommandPool = UInt64 VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -145,21 +146,26 @@ const VkCommandPool = UInt64 VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -380,6 +386,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -430,8 +486,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -439,10 +524,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -454,9 +535,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -471,7 +549,6 @@ end 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 @@ -484,6 +561,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -492,6 +570,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -527,6 +606,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -592,7 +673,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -600,15 +680,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -616,6 +690,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -631,14 +707,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -663,11 +742,7 @@ end 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 @@ -675,16 +750,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -698,11 +767,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -712,8 +782,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -726,8 +814,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -763,8 +849,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -805,6 +889,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -819,6 +905,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -831,26 +919,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -859,6 +965,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -872,19 +1002,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -893,7 +1253,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -914,6 +1273,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -927,6 +1289,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -966,6 +1329,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -985,11 +1349,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1004,6 +1375,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1017,11 +1391,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1047,10 +1448,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1058,6 +1462,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1084,6 +1519,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1091,10 +1527,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1152,7 +1595,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1160,12 +1611,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1423,6 +1876,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1431,7 +1886,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1486,6 +1956,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1523,6 +1996,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1675,20 +2149,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1699,6 +2175,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1719,6 +2196,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1734,6 +2214,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1857,7 +2338,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1867,7 +2350,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1886,6 +2371,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1899,15 +2385,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1939,11 +2429,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2002,6 +2494,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2037,13 +2531,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2071,16 +2567,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2096,6 +2601,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2124,7 +2630,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2164,20 +2672,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2233,6 +2747,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2253,6 +2772,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2279,11 +2799,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2307,6 +2830,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2331,8 +2855,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2341,6 +2865,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2352,15 +2878,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2472,6 +2999,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2483,10 +3012,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2506,6 +3038,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2523,6 +3057,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2533,6 +3068,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3666,6 +4202,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3707,6 +4251,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3721,9 +4273,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5324,6 +5909,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5338,7 +5924,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5362,6 +5952,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5388,6 +5979,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6302,6 +6897,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6331,6 +6928,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6351,11 +6949,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7140,9 +7740,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7547,16 +8150,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :imageView && return Ptr{VkImageView}(x + 8) + f === :imageLayout && return Ptr{VkImageLayout}(x + 16) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 20) + f === :resolveImageView && return Ptr{VkImageView}(x + 24) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 32) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 36) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 40) + f === :clearValue && return Ptr{VkClearValue}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8090,2723 +8733,3020 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 2147483647 end -const VkCompositeAlphaFlagsKHR = VkFlags +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 +end -const VkSurfaceTransformFlagsKHR = VkFlags +const VkMemoryUnmapFlags = VkFlags -struct VkSurfaceCapabilitiesKHR - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags -end +const VkPipelineCreateFlags2 = VkFlags64 -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkHostImageCopyFlags = VkFlags -# 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) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR = UInt64 - -const VkDisplayModeKHR = UInt64 +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple +const PFN_vkCmdSetLineStipple = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR -const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2 +const PFN_vkMapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR -const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2 +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 +const PFN_vkCmdBindIndexBuffer2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR -const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR -const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR = UInt64 +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionParametersKHR = UInt64 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} -end - -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties -end - -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags -end - -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags -end - -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end - -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceKHR = UInt64 -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +@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 -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} +@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 -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR +@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 -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = UInt64 -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) -end +const VkDeviceGroupPresentModeFlagsKHR = VkFlags -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +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 -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} -const VkVideoDecodeUsageFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} -const VkVideoDecodeFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR +const PFN_vkQueuePresentKHR = Ptr{Cvoid} -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +# 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 -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin - 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 - STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +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 -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR end -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 end -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 end -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +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 Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) end -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] -end +const VkVideoSessionKHR = UInt64 -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} -end +const VkVideoSessionParametersKHR = UInt64 -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 end -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +const VkVideoSessionParametersCreateFlagsKHR = VkFlags -struct VkVideoDecodeH264ProfileInfoKHR +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + queryResultStatusSupport::VkBool32 end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkQueueFamilyVideoPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + videoCodecOperations::VkVideoCodecOperationFlagsKHR end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkVideoProfileInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkVideoProfileListInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} end -struct VkVideoDecodeH264PictureInfoKHR +struct VkVideoCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties end -struct VkVideoDecodeH264DpbSlotInfoKHR +struct VkPhysicalDeviceVideoFormatInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + imageUsage::VkImageUsageFlags end -const VkRenderingFlagsKHR = VkRenderingFlags - -const VkRenderingFlagBitsKHR = VkRenderingFlagBits - -const VkRenderingInfoKHR = VkRenderingInfo - -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo - -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo - -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures - -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo - -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +struct VkVideoFormatPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags end -struct VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkVideoPictureResourceInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView end -struct VkAttachmentSampleCountInfoAMD +struct VkVideoReferenceSlotInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX +struct VkVideoSessionMemoryRequirementsKHR sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} -const VkFormatProperties2KHR = VkFormatProperties2 - -const VkImageFormatProperties2KHR = VkImageFormatProperties2 - -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 - -const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 - -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 - -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 - -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) + ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) + ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) + ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) 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) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) + ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) + ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) 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) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) 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) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) 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) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) 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) +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end +const VkVideoDecodeCapabilityFlagsKHR = VkFlags -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +const VkVideoDecodeUsageFlagsKHR = VkFlags -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +const VkVideoDecodeFlagsKHR = VkFlags -struct VkImportMemoryFdInfoKHR +struct VkVideoDecodeCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + flags::VkVideoDecodeCapabilityFlagsKHR end -struct VkMemoryFdPropertiesKHR +struct VkVideoDecodeUsageInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + videoUsageHints::VkVideoDecodeUsageFlagsKHR end -struct VkMemoryGetFdInfoKHR +struct VkVideoDecodeInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 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) +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 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 +@cenum StdVideoH264AspectRatioIdc::UInt32 begin + 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 + STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -struct VkSemaphoreGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 end -# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR -const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR -const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 end -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR -const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +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) +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features - -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features - -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures - -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 VkPresentRegionsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} +struct StdVideoH264SequenceParameterSetVui + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) 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) +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) 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) +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +struct StdVideoH264SequenceParameterSet + data::NTuple{76, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 68) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 72) + return getfield(x, f) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} - -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags - -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end -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 - -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end 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 +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +struct StdVideoH264PictureParameterSet + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) 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 +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] 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 +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 end -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} end -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} end -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPerformanceCounterKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPerformanceCounterDescriptionKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkQueryPoolPerformanceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, 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) +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) return getfield(x, f) end -function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) - r = Ref{VkPerformanceCounterResultKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} - -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved ref[] end -struct VkAcquireProfilingLockInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} end -struct VkPerformanceQuerySubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - counterPassIndex::UInt32 +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR -const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +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) +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 end -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +struct StdVideoEncodeH264ReferenceListsInfo + data::NTuple{92, UInt8} +end -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 84) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 88) + return getfield(x, f) +end -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +struct StdVideoEncodeH264PictureInfo + data::NTuple{28, UInt8} +end -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR -const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +struct StdVideoEncodeH264SliceHeader + data::NTuple{28, UInt8} end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) end -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkDisplayPlaneInfo2KHR +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 end -struct VkDisplayPlaneCapabilities2KHR +struct VkVideoEncodeH264SessionCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR -const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR -const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR -const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR -const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, 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 -const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR -const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR -const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} - -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, 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 -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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} 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) +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} 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) +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 end -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} 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) +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc end -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 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) +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 end -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures - -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features - -struct VkPhysicalDeviceShaderClockFeaturesKHR +struct VkVideoEncodeH264GopRemainingFrameInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 end @cenum StdVideoH265ChromaFormatIdc::UInt32 begin @@ -10958,6 +11898,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) ref = Ref{StdVideoH265HrdFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) @@ -10972,21 +11920,66 @@ function StdVideoH265HrdFlags(nal_hrd_parameters_present_flag::UInt32, vcl_hrd_p end struct StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 44) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] end struct StdVideoH265VpsFlags @@ -11044,6 +12037,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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) ref = Ref{StdVideoH265VpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) @@ -11110,6 +12111,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, end end +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) ref = Ref{StdVideoH265ProfileTierLevelFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) @@ -11122,44 +12131,119 @@ function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_pr end struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc + data::NTuple{12, UInt8} end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) 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} +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 28) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) @@ -11220,6 +12304,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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) ref = Ref{StdVideoH265SpsVuiFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) @@ -11245,32 +12337,88 @@ function StdVideoH265SpsVuiFlags(aspect_ratio_info_present_flag::UInt32, oversca end struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} + data::NTuple{52, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] end struct StdVideoH265PredictorPaletteEntries @@ -11358,6 +12506,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) ref = Ref{StdVideoH265SpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) @@ -11447,9328 +12603,20079 @@ function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbo end end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign - ref[] +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{84, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 60) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 64) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 68) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 76) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 132) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{28, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{36, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 28) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 +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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR = UInt64 + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{536, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 8) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 264) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 520) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 528) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR = UInt64 + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 20) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 24) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 76) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 80) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 84) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 88) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 92) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 96) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 100) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{116, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 84) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 92) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 96) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 100) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 104) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 108) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 112) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{44, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 36) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 +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 +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT +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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX = UInt64 + +const VkCuFunctionNVX = UInt64 + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX +const PFN_vkGetImageViewHandle64NVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD +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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 +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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 +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 + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, 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 + +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@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 +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 + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 +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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 + +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + 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 +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 +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 + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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 +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 + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +struct VkMultiviewPerViewAttributesInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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 +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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 +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 + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + 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 +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 +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# 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 + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, 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 vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, 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 vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, 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 vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end + +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures + +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties + +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock + +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo + +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 +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, 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 + +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD + +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 + +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +end + +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, 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 +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT +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 vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, 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 vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, 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 vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, 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 vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, 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 +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 + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, 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 vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, 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 vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureNV = UInt64 + +@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 = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + 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_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 +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 VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 +end + +@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_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + 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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + 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 VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} +end + +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), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV +const PFN_vkCreateAccelerationStructureNV = 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_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_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 + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, 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 vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, 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 vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, 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 vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, 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 vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, 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 vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, 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 + +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo + +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 +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 + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, 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 + +const VkTimeDomainEXT = VkTimeDomainKHR + +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR + +# 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, 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 + +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures + +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits + +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags + +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo + +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback + +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + +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 +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 vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +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_vkCmdSetExclusiveScissorEnableNV +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, 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 + +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 +end + +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, 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 vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), 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 + +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end + ref[] +end + +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data + ref[] +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 StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL end -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkVideoDecodeH265ProfileInfoKHR +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkVideoDecodeH265CapabilitiesKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc + localDimmingSupport::VkBool32 end -struct VkVideoDecodeH265SessionParametersAddInfoKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} + localDimmingEnable::VkBool32 end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +# 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 VkVideoDecodeH265PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} -end - -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + fragmentDensityMapAttachment::VkAttachmentReference end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkRenderingFragmentDensityMapAttachmentInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + imageView::VkImageView + imageLayout::VkImageLayout end -const VkDriverIdKHR = VkDriverId - -const VkConformanceVersionKHR = VkConformanceVersion - -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties - -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +const VkShaderCorePropertiesFlagsAMD = VkFlags -const VkSemaphoreTypeKHR = VkSemaphoreType +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 +end -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +end -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 +@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 -struct VkFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkValidationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +const VkComponentTypeNV = VkComponentTypeKHR + +const VkScopeNV = VkScopeKHR + +struct VkCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV 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 + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + cooperativeMatrixSupportedStages::VkShaderStageFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +@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 -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + coverageReductionMode::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout - -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -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) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT end -const VkDeferredOperationKHR = UInt64 - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} - -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT end -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkLineRasterizationModeEXT = VkLineRasterizationMode -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) 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 +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 + 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 VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline +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 VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) end -struct VkPipelineExecutableInfoKHR +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 + extendedDynamicState::VkBool32 end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -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 void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -struct VkPresentIdKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -struct VkPhysicalDevicePresentIdFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentId::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 -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end -const VkAccessFlags2KHR = VkAccessFlags2 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end -const VkSubmitFlagsKHR = VkSubmitFlags +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +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 -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -struct VkQueueFamilyCheckpointProperties2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 -end +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -struct VkCheckpointData2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} -end +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkImageSubresource2EXT = VkImageSubresource2 -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} + +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + minPlacedMemoryMapAlignment::VkDeviceSize end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + pPlacedAddress::Ptr{Cvoid} end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -const VkCopyImageInfo2KHR = VkCopyImageInfo2 +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -const VkBufferCopy2KHR = VkBufferCopy2 +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -const VkImageCopy2KHR = VkImageCopy2 +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -const VkImageBlit2KHR = VkImageBlit2 +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -const VkImageResolve2KHR = VkImageResolve2 +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) -end +const VkIndirectCommandsLayoutNV = UInt64 -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) -end +const VkIndirectStateFlagsNV = VkFlags -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +@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 -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) -end +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +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 -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkIndirectCommandsLayoutTokenNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + 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 VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} - -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +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 -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -const VkDebugReportCallbackEXT = UInt64 +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) 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 +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -const VkDebugReportFlagsEXT = VkFlags +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT -const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -struct VkDebugReportCallbackCreateInfoEXT +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT -const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT -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) +struct VkCommandBufferInheritanceViewportScissorInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) -end +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR 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) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkDepthBiasInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -struct VkDebugMarkerObjectNameInfoEXT +struct VkDepthBiasRepresentationInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -struct VkDebugMarkerObjectTagInfoEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) +end + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) +end + +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 +end + +const VkDeviceMemoryReportFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + deviceMemoryReport::VkBool32 end -struct VkDebugMarkerMarkerInfoEXT +struct VkDeviceMemoryReportCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +struct VkDeviceDeviceMemoryReportCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR + +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{28, UInt8} end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 8) + f === :format && return Ptr{VkFormat}(x + 24) + return getfield(x, f) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -struct VkDedicatedAllocationBufferCreateInfoNV +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + maxCustomBorderColorSamplers::UInt32 end -struct VkDedicatedAllocationMemoryAllocateInfoNV +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + presentBarrier::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkSurfaceCapabilitiesPresentBarrierNV 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 + presentBarrierSupported::VkBool32 end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 + presentBarrierEnable::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT -const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT -const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT -const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT -const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT +const PFN_vkCreatePrivateDataSlotEXT = 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) +# 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{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 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) +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -const VkCuModuleNVX = UInt64 +const VkTileShadingRenderPassFlagsQCOM = VkFlags -const VkCuFunctionNVX = UInt64 +struct VkPhysicalDeviceTileShadingFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceTileShadingPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkCuFunctionCreateInfoNVX +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D end -struct VkCuLaunchInfoNVX +struct VkPerTileBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +const VkAccelerationStructureKHR = UInt64 + +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -struct VkImageViewHandleInfoNVX +struct VkDescriptorAddressInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -struct VkImageViewAddressPropertiesNVX +struct VkDescriptorBufferBindingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + address::VkDeviceAddress + usage::VkBufferUsageFlags end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} end -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) end -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD -const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD -const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} -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) +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkDescriptorGetInfoEXT + data::NTuple{24, UInt8} 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) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkDescriptorType}(x + 8) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 16) + return getfield(x, f) end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD -const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +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) +struct VkImageViewCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +struct VkSamplerCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampler::VkSampler end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 + opaqueCaptureDescriptorData::Ptr{Cvoid} 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 +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV end -const VkExternalMemoryHandleTypeFlagsNV = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -const VkExternalMemoryFeatureFlagsNV = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV -const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = 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 +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +end -struct VkImageViewASTCDecodeModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - decodeMode::VkFormat +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +end + +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -const VkConditionalRenderingFlagsEXT = VkFlags +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRenderingEnable::VkBool32 +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT -const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT -const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) - ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineViewportWScalingStateCreateInfoNV +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags + +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} + graphicsPipelineLibrary::VkBool32 end -# 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) +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT -const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 +end -function vkReleaseDisplayEXT(physicalDevice, display) - ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -const VkSurfaceCounterFlagsEXT = VkFlags +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits +end -struct VkSurfaceCapabilities2EXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV 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 + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) 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 +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 -end +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 -end +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} end -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -struct VkDisplayEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{16, UInt8} +end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + return getfield(x, f) end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) 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) +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +struct VkAccelerationStructureMotionInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} +end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] 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 +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) +end -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPipelineViewportSwizzleStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -struct VkPipelineDiscardRectangleStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) +end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] +end -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + ycbcr2plane444Formats::VkBool32 end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + fragmentDensityMapDeferred::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 -end - -struct VkXYColorEXT - x::Cfloat - y::Cfloat + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkHdrMetadataEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat + transform::VkSurfaceTransformFlagBitsKHR end -# 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 +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 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 +const VkImageCompressionFlagsEXT = VkFlags -@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + imageCompressionControl::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkImageCompressionControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -struct VkDebugUtilsMessengerCallbackDataEXT +struct VkImageCompressionPropertiesEXT 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} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + attachmentFeedbackLoopLayout::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT -const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT -const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} - -# 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} +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkPhysicalDeviceFaultFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} end -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorType::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) -end +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkVertexInputBindingDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 end -const VkSamplerReductionModeEXT = VkSamplerReductionMode - -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo - -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties - -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures - -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties - -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkSampleLocationsInfoEXT +struct VkPhysicalDeviceDrmPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 end -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkRenderPassSampleLocationsBeginInfoEXT +const VkDeviceAddressBindingFlagsEXT = VkFlags + +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + reportAddressBinding::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +struct VkDeviceAddressBindingCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkPhysicalDeviceDepthClipControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + depthClipControl::VkBool32 end -struct VkMultisamplePropertiesEXT +struct VkPipelineViewportDepthClipControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + negativeOneToOne::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +struct VkSubpassShadingPipelineCreateInfoHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassShading::VkBool32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +end + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT + invocationMask::VkBool32 end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) 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 +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +const VkRemoteAddressNV = Ptr{Cvoid} -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkMemoryGetRemoteAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + externalMemoryRDMA::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -struct VkDrmFormatModifierPropertiesListEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +const VkPipelineInfoEXT = VkPipelineInfoKHR + +struct VkPipelinePropertiesIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + pipelineIdentifier::NTuple{16, UInt8} end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + pipelinePropertiesIdentifier::VkBool32 end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} + +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -struct VkImageDrmFormatModifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkDrmFormatModifierPropertiesList2EXT +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} + frameBoundary::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} - -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +struct VkFrameBoundaryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multisampledRenderToSingleSampled::VkBool32 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 +struct VkSubpassResolvePerformanceQueryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + optimal::VkBool32 end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +end -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 +end -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} +end -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +end -@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 +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) 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 +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} -end +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures -struct VkPipelineViewportShadingRateImageStateCreateInfoNV +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} + minLod::VkBool32 end -struct VkPhysicalDeviceShadingRateImageFeaturesNV +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 + minLod::Cfloat end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkPhysicalDeviceMultiDrawFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 + multiDraw::VkBool32 end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +struct VkPhysicalDeviceMultiDrawPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiDrawCount::UInt32 end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV -const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV -const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV -const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkPhysicalDeviceShaderTileImageFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkPhysicalDeviceShaderTileImagePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -const VkAccelerationStructureNV = UInt64 +const VkMicromapEXT = UInt64 -@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 +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 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 = 2 - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 - VK_GEOMETRY_TYPE_AABBS_NV = 1 - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -const VkGeometryTypeNV = VkGeometryTypeKHR +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +end -@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 +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -@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 +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkGeometryFlagsKHR = VkFlags +const VkMicromapCreateFlagsEXT = VkFlags -const VkGeometryFlagsNV = VkGeometryFlagsKHR +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 +end -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -const VkGeometryInstanceFlagsKHR = VkFlags +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} + +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -const VkBuildAccelerationStructureFlagsKHR = VkFlags +struct VkMicromapBuildInfoEXT + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 8) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 12) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 16) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 24) + f === :usageCountsCount && return Ptr{UInt32}(x + 32) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 36) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 40) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 56) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 72) + return getfield(x, f) +end -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -struct VkRayTracingShaderGroupCreateInfoNV +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] +end + +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkRayTracingPipelineCreateInfoNV +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT 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 + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkGeometryTrianglesNV +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT 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 + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkGeometryAABBNV +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize + pVersionData::Ptr{UInt8} end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{32, UInt8} end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkMicromapEXT}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{32, UInt8} end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkMicromapEXT}(x + 16) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 24) + return getfield(x, f) end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT end -const VkAabbPositionsNV = VkAabbPositionsKHR +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{56, UInt8} end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :indexType && return Ptr{VkIndexType}(x + 8) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :indexStride && return Ptr{VkDeviceSize}(x + 24) + f === :baseTriangle && return Ptr{UInt32}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 36) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 40) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 44) + f === :micromap && return Ptr{VkMicromapEXT}(x + 48) return getfield(x, f) end -function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) - r = Ref{VkAccelerationStructureInstanceKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap ref[] end -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV -const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV -const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR -const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV -const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) 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) +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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) +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) 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) +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR - -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR - -struct VkImportMemoryHostPointerInfoEXT +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 end -struct VkMemoryHostPointerPropertiesEXT +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + clusterShadingRate::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI +const PFN_vkCmdDrawClusterHUAWEI = 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_vkCmdDrawClusterIndirectHUAWEI +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) 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) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -const VkPipelineCompilerControlFlagsAMD = VkFlags - -struct VkPipelineCompilerControlCreateInfoAMD +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 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 + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -struct VkCalibratedTimestampInfoEXT +struct VkSamplerBorderColorComponentMappingCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT -end - -# 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 - -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) + components::VkComponentMapping + srgb::VkBool32 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) +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pageableDeviceLocalMemory::VkBool32 end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) -end +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} -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 +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) 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 +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkPhysicalDeviceShaderCorePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + shaderCoreCount::UInt32 end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT +struct VkPhysicalDeviceSchedulingControlsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 + imageSlicedViewOf3D::VkBool32 end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo - -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkImageViewSlicedCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 + sliceOffset::UInt32 + sliceCount::UInt32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 + descriptorSetHostMapping::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkDescriptorSetBindingReferenceVALVE 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 + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 end -# 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_vkGetDescriptorSetLayoutHostMappingInfoVALVE +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV -const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) 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 +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceRenderPassStripedFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + renderPassStriped::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkPhysicalDeviceRenderPassStripedPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkRenderPassStripeInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 + stripeArea::VkRect2D end -# 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) +struct VkRenderPassStripeBeginInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkRenderPassStripeSubmitInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + fragmentDensityMapOffset::VkBool32 end -struct VkCheckpointDataNV +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT + +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectCopy::VkBool32 end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 + supportedQueues::VkQueueFlags end -const VkPerformanceConfigurationINTEL = UInt64 +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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 +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) 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 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -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) +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV 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) +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 end -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - marker::UInt64 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkPerformanceStreamMarkerInfoINTEL +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - marker::UInt32 + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPerformanceOverrideInfoINTEL +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress end -# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{88, UInt8} end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :radiusFormat && return Ptr{VkFormat}(x + 32) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 48) + f === :indexType && return Ptr{VkIndexType}(x + 56) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :indexStride && return Ptr{VkDeviceSize}(x + 72) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 80) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 84) + return getfield(x, f) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{80, UInt8} end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :radiusFormat && return Ptr{VkFormat}(x + 32) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 48) + f === :indexType && return Ptr{VkIndexType}(x + 56) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :indexStride && return Ptr{VkDeviceSize}(x + 72) + return getfield(x, f) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionControlSwapchain::VkBool32 end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +struct VkImageViewSampleWeightCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +struct VkPhysicalDeviceImageProcessingFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 + maxCommandBufferNestingLevel::UInt32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 + acquireUnmodifiedMemory::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicPrimitiveTopologyUnrestricted::VkBool32 +end + +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp +end + +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} -const VkShaderCorePropertiesFlagsAMD = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +end -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +end -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +end -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +end -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +end -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +end -@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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) 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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -struct VkValidationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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 +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) 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 +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) 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 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +end -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPipelineCoverageReductionStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkFramebufferMixedSamplesCombinationNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV -const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) - ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) end -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +end -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) 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 +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) 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 +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + subpassMergeFeedback::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + disallowMerging::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} - -# 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} +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) -end +const VkDirectDriverLoadingFlagsLUNARG = VkFlags -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) -end +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +struct VkDirectDriverLoadingInfoLUNARG + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +struct VkDirectDriverLoadingListLUNARG + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) -end +const VkTensorARM = UInt64 -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end +const VkTensorViewARM = UInt64 -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 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 +const VkTensorCreateFlagsARM = VkFlags64 -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end +const VkTensorCreateFlagBitsARM = VkFlags64 -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +const VkTensorViewCreateFlagsARM = VkFlags64 -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end +const VkTensorViewCreateFlagBitsARM = VkFlags64 -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +struct VkTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +struct VkTensorViewCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +struct VkTensorMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +struct VkBindTensorMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +struct VkWriteDescriptorSetTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkTensorFormatPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkPhysicalDeviceTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags 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) +struct VkTensorMemoryBarrierARM + sType::VkStructureType + pNext::Ptr{Cvoid} + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkPhysicalDeviceTensorFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} end -const VkPresentScalingFlagsEXT = VkFlags +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} +end -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkCopyTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -const VkPresentGravityFlagsEXT = VkFlags +struct VkMemoryDedicatedAllocateInfoTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM +end -struct VkSurfacePresentModeEXT +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkSurfacePresentScalingCapabilitiesEXT +struct VkExternalTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D + externalMemoryProperties::VkExternalMemoryProperties end -struct VkSurfacePresentModeCompatibilityEXT +struct VkExternalMemoryTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + descriptorBufferTensorDescriptors::VkBool32 end -struct VkSwapchainPresentFenceInfoEXT +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkDescriptorGetTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + tensorView::VkTensorViewARM end -struct VkSwapchainPresentModeInfoEXT +struct VkTensorCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + tensor::VkTensorARM end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + tensorView::VkTensorViewARM end -struct VkReleaseSwapchainImagesInfoEXT +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM +const PFN_vkCreateTensorARM = Ptr{Cvoid} -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM +const PFN_vkDestroyTensorARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) +end -const VkIndirectCommandsLayoutNV = UInt64 +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) +end -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -const VkIndirectStateFlagsNV = VkFlags +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -@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 +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -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 +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -struct VkIndirectCommandsLayoutTokenNV +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT 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} + shaderModuleIdentifier::VkBool32 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -struct VkGeneratedCommandsInfoNV +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT 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 + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV -const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV -const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV -const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV -const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV -const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) -end +const VkOpticalFlowSessionNV = UInt64 -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) -end +const VkOpticalFlowGridSizeFlagsNV = VkFlags -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 + opticalFlow::VkBool32 end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceOpticalFlowPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkOpticalFlowImageFormatInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + usage::VkOpticalFlowUsageFlagsNV end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties - -struct VkRenderPassTransformBeginInfoQCOM +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + format::VkFormat end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D -end - -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -const VkDeviceMemoryReportFlagsEXT = VkFlags - -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT +struct VkOpticalFlowSessionCreatePrivateDataInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -struct VkDeviceMemoryReportCallbackDataEXT +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -struct VkDeviceDeviceMemoryReportCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end + +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end + +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkPhysicalDeviceRobustness2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkPhysicalDeviceRobustness2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + legacyDithering::VkBool32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + antiLag::VkBool32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkAntiLagPresentationInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkAntiLagDataAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -const VkPrivateDataSlotEXT = VkPrivateDataSlot - -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) +end -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) +end -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo +const VkShaderEXT = UInt64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +const VkShaderCreateFlagsEXT = VkFlags -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkPhysicalDeviceShaderObjectFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderObject::VkBool32 end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkPhysicalDeviceShaderObjectPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +struct VkShaderCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) -end +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT +const PFN_vkCreateShadersEXT = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} -@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -struct VkDeviceDiagnosticsConfigCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -const VkAccelerationStructureKHR = UInt64 +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -struct VkDescriptorAddressInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkDescriptorBufferBindingInfoEXT +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + tileProperties::VkBool32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +end -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkDescriptorGetInfoEXT +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + amigoProfiling::VkBool32 end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkAmigoProfilingSubmitInfoSEC sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + multiviewPerViewViewports::VkBool32 end -struct VkImageViewCaptureDescriptorDataInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + rayTracingInvocationReorder::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{72, UInt8} end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :srcSize && return Ptr{Csize_t}(x + 8) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 24) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 32) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 40) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 44) + f === :numRows && return Ptr{UInt32}(x + 48) + f === :numColumns && return Ptr{UInt32}(x + 52) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 56) + f === :srcStride && return Ptr{Csize_t}(x + 60) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :dstStride && return Ptr{Csize_t}(x + 68) + return getfield(x, f) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedSparseAddressSpace::VkBool32 end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyVertexAttributes::VkBool32 end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nativeUnalignedPerformance::VkBool32 end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkLayerSettingsCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags - -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + shaderCoreBuiltins::VkBool32 end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + pipelineLibraryGroupHandles::VkBool32 end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + dynamicRenderingUnusedAttachments::VkBool32 end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkLatencySleepModeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + presentID::UInt64 + marker::VkLatencyMarkerNV end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkLatencyTimingsFrameReportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkGetLatencyMarkerInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +struct VkLatencySubmissionPresentIdNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags - -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags - -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +struct VkSwapchainLatencyCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +struct VkOutOfBandQueueTypeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + queueType::VkOutOfBandQueueTypeNV end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV +const PFN_vkLatencySleepNV = Ptr{Cvoid} -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] -end +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -struct VkAccelerationStructureGeometryMotionTrianglesDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} + +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) end -struct VkAccelerationStructureMotionInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end + +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +const VkDataGraphPipelineSessionARM = UInt64 + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkDataGraphPipelineSessionCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + session::VkDataGraphPipelineSessionARM end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkDataGraphPipelineSessionBindPointRequirementARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -struct VkCopyCommandTransformInfoQCOM +struct VkBindDataGraphPipelineSessionMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +struct VkDataGraphPipelineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraphPipeline::VkPipeline +end -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -const VkImageCompressionFlagsEXT = VkFlags +struct VkDataGraphPipelineIdentifierCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineDispatchInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineDispatchFlagsARM end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM end -struct VkImageCompressionControlEXT +struct VkDataGraphProcessingEngineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkImageSubresource2EXT +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkImageCompressionPropertiesEXT +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) +end + +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) +end + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + multiviewPerViewRenderAreas::VkBool32 end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -struct VkPhysicalDeviceFaultFeaturesEXT +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + textureBlockMatch2::VkBool32 end -struct VkDeviceFaultCountsEXT +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize + maxBlockMatchWindow::VkExtent2D end -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + selectableCubicWeights::VkBool32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} - -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + cubicRangeClamp::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -struct VkMutableDescriptorTypeCreateInfoEXT +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 +end + +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + tileMemoryHeap::VkBool32 end -struct VkVertexInputAttributeDescription2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} - -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory end -struct VkPhysicalDeviceDrmPropertiesEXT +struct VkTileMemorySizeInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 + size::VkDeviceSize end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -const VkDeviceAddressBindingFlagsEXT = VkFlags +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) +end -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + hdmi3DSupported::VkBool32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkPhysicalDeviceRawAccessChainsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + shaderRawAccessChains::VkBool32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + reservedExternalQueues::UInt32 end -struct VkSubpassShadingPipelineCreateInfoHUAWEI +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 + preferredQueue::VkQueue end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI +struct VkExternalComputeQueueDataParamsNV sType::VkStructureType pNext::Ptr{Cvoid} - subpassShading::VkBool32 + deviceIndex::UInt32 end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + commandBufferInheritance::VkBool32 end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16VectorAtomics::VkBool32 end -const VkRemoteAddressNV = Ptr{Cvoid} +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderReplicatedComposites::VkBool32 +end -struct VkMemoryGetRemoteAddressInfoNV +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 + rayTracingValidation::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -const VkPipelineInfoEXT = VkPipelineInfoKHR +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterAccelerationStructure::VkBool32 end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkSubpassResolvePerformanceQueryEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - optimal::VkBool32 + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkMultisampledRenderToSingleSampledInfoEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{4, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{28, UInt8} end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 16) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 20) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 24) + return getfield(x, f) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{144, UInt8} end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 8) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 40) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 48) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 56) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 80) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 104) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 128) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 136) + return getfield(x, f) end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPipelineColorWriteCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkImageViewMinLodCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::Cfloat +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkPhysicalDeviceMultiDrawFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multiDraw::VkBool32 +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceMultiDrawPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} end -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -const VkMicromapEXT = UInt64 - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +struct VkAccelerationStructureBuildSizesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + allowClusterAccelerationStructure::VkBool32 end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -const VkBuildMicromapFlagsEXT = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -const VkMicromapCreateFlagsEXT = VkFlags - -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] -end +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags -struct VkMicromapBuildInfoEXT +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize + partitionedAccelerationStructure::VkBool32 end -struct VkMicromapCreateInfoEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 + enablePartitionTranslation::VkBool32 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -struct VkMicromapVersionInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkCopyMicromapToMemoryInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkCopyMicromapInfoEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -struct VkMicromapBuildSizesInfoEXT +struct VkPartitionedAccelerationStructureInstancesInputNV sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkBuildPartitionedAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT -end - -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} - -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) -end +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} + +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +const VkIndirectExecutionSetEXT = UInt64 + +const VkIndirectCommandsLayoutEXT = UInt64 + +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +const VkIndirectCommandsInputModeFlagsEXT = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkGeneratedCommandsMemoryRequirementsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectExecutionSetPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +struct VkIndirectExecutionSetShaderLayoutInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +struct VkIndirectExecutionSetShaderInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkIndirectExecutionSetInfoEXT + data::NTuple{4, UInt8} end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} + +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{16, UInt8} end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 8) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 12) + return getfield(x, f) end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkGeneratedCommandsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkWriteIndirectExecutionSetPipelineEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + index::UInt32 + pipeline::VkPipeline end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 +end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{4, UInt8} end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] +end + +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 8) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 12) + f === :offset && return Ptr{UInt32}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] +end + +struct VkIndirectCommandsLayoutCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 +end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE +struct VkGeneratedCommandsPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 + pipeline::VkPipeline end -struct VkDescriptorSetBindingReferenceVALVE +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkDescriptorSetLayoutHostMappingInfoVALVE +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 + index::UInt32 + shader::VkShaderEXT end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - indirectCopy::VkBool32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end + +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end + +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end + +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + imageAlignmentControl::VkBool32 +end + +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedImageAlignmentMask::UInt32 end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +struct VkImageAlignmentControlCreateInfoMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + maximumRequestedAlignment::UInt32 end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +struct VkPhysicalDeviceDepthClampControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampControl::VkBool32 end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +struct VkPipelineViewportDepthClampControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + hdrVivid::VkBool32 +end -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 +struct VkHdrVividDynamicMetadataHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} +end -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineOpacityMicromap::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeRobustness::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + fragmentDensityMapLayered::VkBool32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + maxFragmentDensityMapLayers::UInt32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + presentMetering::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{56, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :vertexFormat && return Ptr{VkFormat}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 24) + f === :maxVertex && return Ptr{UInt32}(x + 32) + f === :indexType && return Ptr{VkIndexType}(x + 36) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 40) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{24, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :stride && return Ptr{VkDeviceSize}(x + 16) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{24, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{56, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +struct VkAccelerationStructureGeometryKHR + data::NTuple{80, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 8) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 16) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 72) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{64, UInt8} +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 8) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 12) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 16) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :geometryCount && return Ptr{UInt32}(x + 40) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 44) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 48) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 56) + return getfield(x, f) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{32, UInt8} end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 8) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{32, UInt8} end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 4) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 8) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 24) + return getfield(x, f) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR +const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +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 vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +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 vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +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 vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +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 vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +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 -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -struct VkRenderPassCreationControlEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disallowMerging::VkBool32 +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 -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +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 -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +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 -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) +end -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) +end -struct VkDirectDriverLoadingInfoLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT +struct VkPhysicalDeviceRayQueryFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 + rayQuery::VkBool32 end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 end -struct VkShaderModuleIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -const VkOpticalFlowSessionNV = UInt64 - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -const VkOpticalFlowGridSizeFlagsNV = VkFlags +const VkWin32SurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +struct VkWin32SurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWin32SurfaceCreateFlagsKHR + hinstance::HINSTANCE + hwnd::HWND end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR +const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR +const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowExecuteFlagsNV = VkFlags - -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 +function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) + ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) end -struct VkOpticalFlowImageFormatPropertiesNV +struct VkImportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - format::VkFormat + handleType::VkExternalMemoryHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -struct VkOpticalFlowSessionCreateInfoNV +struct VkExportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV +struct VkMemoryWin32HandlePropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} + memoryTypeBits::UInt32 end -struct VkOpticalFlowExecuteInfoNV +struct VkMemoryGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR +const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR +const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) + ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) +end -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) end -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +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 -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +struct VkImportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +struct VkExportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +struct VkD3D12FenceSubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValuesCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValuesCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} end -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +struct VkSemaphoreGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits end -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR +const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) +# 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 vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) +function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) end -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT +struct VkImportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM +struct VkExportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - tileProperties::VkBool32 + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -struct VkTilePropertiesQCOM +struct VkFenceGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR +const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR +const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) +function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) + ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) end -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) +function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) end -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC +struct VkImportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 + handleType::VkExternalMemoryHandleTypeFlagsNV + handle::HANDLE end -struct VkAmigoProfilingSubmitInfoSEC +struct VkExportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD end -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 +# 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 -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) end -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV +struct VkWin32KeyedMutexAcquireReleaseInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeoutMilliseconds::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} end -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 +@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 VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM +struct VkSurfaceFullScreenExclusiveInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 + fullScreenExclusive::VkFullScreenExclusiveEXT end -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM +struct VkSurfaceCapabilitiesFullScreenExclusiveEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 + fullScreenExclusiveSupported::VkBool32 end -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT +struct VkSurfaceFullScreenExclusiveWin32InfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 + hmonitor::HMONITOR end -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT +const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT +const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT +const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT +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 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) end -const VkAccelerationStructureCreateFlagsKHR = VkFlags +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) +end + +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireWinrtDisplayNV +const PFN_vkAcquireWinrtDisplayNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetWinrtDisplayNV +const PFN_vkGetWinrtDisplayNV = Ptr{Cvoid} + +function vkAcquireWinrtDisplayNV(physicalDevice, display) + ccall((:vkAcquireWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +function vkAcquireWinrtDisplayNV(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay) + ccall((:vkGetWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) end -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{56, UInt8} -end +function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 0 + +const VK_NULL_HANDLE = Culonglong(0) + +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) + +const VK_HEADER_VERSION = 321 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = Cuint(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 = Cuint(1) -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_UUID_SIZE = Cuint(16) -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -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_MAX_MEMORY_HEAPS = Cuint(16) -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_VERSION_1_1 = 1 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -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_LUID_SIZE = Cuint(8) -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_VERSION_1_2 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const VK_VERSION_1_3 = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const VK_VERSION_1_4 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const VK_KHR_surface = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const VK_KHR_SURFACE_SPEC_VERSION = 25 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_KHR_swapchain = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_KHR_display = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR -const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VK_KHR_display_swapchain = 1 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const VK_KHR_video_queue = 1 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -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 +const VK_KHR_video_decode_queue = 1 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -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 +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const VK_KHR_video_encode_h264 = 1 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const vulkan_video_codec_h264std = 1 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const vulkan_video_codecs_common = 1 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -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 +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 + +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 + +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const vulkan_video_codec_h264std_encode = 1 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -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 +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_KHR_video_encode_h265 = 1 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const vulkan_video_codec_h265std = 1 -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 +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -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 STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -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 STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -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 +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -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 +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -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 +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -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 +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const vulkan_video_codec_h265std_encode = 1 -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_video_decode_h264 = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const vulkan_video_codec_h264std_decode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 + +const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_dynamic_rendering = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -const VkWin32SurfaceCreateFlagsKHR = VkFlags +const VK_KHR_multiview = 1 -struct VkWin32SurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWin32SurfaceCreateFlagsKHR - hinstance::HINSTANCE - hwnd::HWND -end +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR -const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR -const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) - ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end +const VK_KHR_device_group = 1 -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -struct VkImportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - handle::HANDLE - name::LPCWSTR -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -struct VkExportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{SECURITY_ATTRIBUTES} - dwAccess::DWORD - name::LPCWSTR -end +const VK_KHR_shader_draw_parameters = 1 -struct VkMemoryWin32HandlePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -struct VkMemoryGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR -const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} +const VK_KHR_maintenance1 = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR -const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) - ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end +const VK_KHR_device_group_creation = 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_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkImportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - handle::HANDLE - name::LPCWSTR -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkExportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{SECURITY_ATTRIBUTES} - dwAccess::DWORD - name::LPCWSTR -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkD3D12FenceSubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreValuesCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValuesCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} -end +const VK_KHR_external_memory_capabilities = 1 -struct VkSemaphoreGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR -const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR -const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) - ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end +const VK_KHR_external_memory = 1 -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -struct VkImportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - handle::HANDLE - name::LPCWSTR -end +const VK_KHR_external_memory_fd = 1 -struct VkExportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{SECURITY_ATTRIBUTES} - dwAccess::DWORD - name::LPCWSTR -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -struct VkFenceGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR -const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} +const VK_KHR_external_semaphore_capabilities = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR -const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) - ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end +const VK_KHR_external_semaphore = 1 -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -struct VkImportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagsNV - handle::HANDLE -end +const VK_KHR_external_semaphore_fd = 1 -struct VkExportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{SECURITY_ATTRIBUTES} - dwAccess::DWORD -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV -const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) - ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) -end +const VK_KHR_push_descriptor = 1 -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) -end +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 -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_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" -@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 +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 -struct VkSurfaceFullScreenExclusiveInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusive::VkFullScreenExclusiveEXT -end +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkSurfaceCapabilitiesFullScreenExclusiveEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusiveSupported::VkBool32 -end +const VK_KHR_16bit_storage = 1 -struct VkSurfaceFullScreenExclusiveWin32InfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hmonitor::HMONITOR -end +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT -const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT -const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} +const VK_KHR_incremental_present = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT -const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT -const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end +const VK_KHR_descriptor_update_template = 1 -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VK_KHR_imageless_framebuffer = 1 -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireWinrtDisplayNV -const PFN_vkAcquireWinrtDisplayNV = Ptr{Cvoid} +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetWinrtDisplayNV -const PFN_vkGetWinrtDisplayNV = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -function vkAcquireWinrtDisplayNV(physicalDevice, display) - ccall((:vkAcquireWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireWinrtDisplayNV(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay) - ccall((:vkGetWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -const VULKAN_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_CORE_H_ = 1 +const VK_KHR_external_fence = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_USE_64_BIT_PTR_DEFINES = 0 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_NULL_HANDLE = Culonglong(0) +const VK_KHR_external_fence_fd = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_HEADER_VERSION = 240 +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_performance_query = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_FALSE = Cuint(0) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_maintenance2 = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_TRUE = Cuint(1) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_variable_pointers = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_VERSION_1_1 = 1 +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_dedicated_allocation = 1 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_VERSION_1_3 = 1 +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_relaxed_block_layout = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_image_format_list = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_bind_memory2 = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_maintenance3 = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_video_decode_queue = 1 +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_shader_clock = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VK_KHR_video_decode_h265 = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const vulkan_video_codec_h265std_decode = 1 -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_dynamic_rendering = 1 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_multiview = 1 +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_get_physical_device_properties2 = 1 +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_driver_properties = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_maintenance1 = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20838,13 +32745,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20916,7 +32823,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -21022,7 +32929,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -21040,16 +32947,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21292,7 +33205,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21416,7 +33329,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21486,6 +33399,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21530,10 +33455,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21594,6 +33525,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21638,7 +33581,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21668,7 +33611,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21720,9 +33663,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21744,6 +33693,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21774,7 +33729,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21794,6 +33749,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21808,7 +33769,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21824,6 +33785,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21842,9 +33823,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21860,6 +33847,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21884,6 +33883,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21902,6 +33913,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21924,7 +33941,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21934,6 +33951,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21958,12 +33987,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21976,6 +34029,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/powerpc64le-linux-gnu.jl b/lib/powerpc64le-linux-gnu.jl index 56081ed..d2d4b92 100644 --- a/lib/powerpc64le-linux-gnu.jl +++ b/lib/powerpc64le-linux-gnu.jl @@ -151,6 +151,7 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -165,21 +166,26 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -400,6 +406,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -450,8 +506,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -459,10 +544,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -474,9 +555,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -491,7 +569,6 @@ end 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 @@ -504,6 +581,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -512,6 +590,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -547,6 +626,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -612,7 +693,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -620,15 +700,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -636,6 +710,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -651,14 +727,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -683,11 +762,7 @@ end 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 @@ -695,16 +770,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -718,11 +787,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -732,8 +802,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -746,8 +834,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -783,8 +869,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -825,6 +909,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -839,6 +925,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -851,26 +939,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -879,6 +985,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -892,19 +1022,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -913,7 +1273,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -934,6 +1293,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -947,6 +1309,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -986,6 +1349,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -1005,11 +1369,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1024,6 +1395,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1037,11 +1411,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1067,10 +1468,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1078,6 +1482,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1104,6 +1539,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1111,10 +1547,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1172,7 +1615,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1180,12 +1631,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1443,6 +1896,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1451,7 +1906,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1506,6 +1976,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1543,6 +2016,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1695,20 +2169,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1719,6 +2195,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1739,6 +2216,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1754,6 +2234,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1877,7 +2358,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1887,7 +2370,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1906,6 +2391,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1919,15 +2405,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1959,11 +2449,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2022,6 +2514,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2057,13 +2551,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2091,16 +2587,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2116,6 +2621,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,7 +2650,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2184,20 +2692,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2253,6 +2767,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2273,6 +2792,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2299,11 +2819,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2327,6 +2850,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2351,8 +2875,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2361,6 +2885,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2372,15 +2898,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2492,6 +3019,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,10 +3032,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2526,6 +3058,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2543,6 +3077,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2553,6 +3088,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3686,6 +4222,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3727,6 +4271,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3741,9 +4293,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5348,6 +5933,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5362,7 +5948,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5386,6 +5976,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5412,6 +6003,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6326,6 +6921,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6355,6 +6952,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6375,11 +6973,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7166,9 +7766,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7573,16 +8176,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8116,967 +8759,1718 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 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 +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkMemoryUnmapFlags = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR_T = Cvoid +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR_T = Cvoid +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end +const VkSurfaceKHR_T = Cvoid -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags +@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 -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} -end +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) -end +const VkSwapchainKHR_T = Cvoid -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +# 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 vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -const VkVideoDecodeUsageFlagsKHR = VkFlags +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end -const VkVideoDecodeFlagsKHR = VkFlags +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 -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, 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 vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, 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 vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end + +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end + +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 +end + +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR +end + +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +end + +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end + +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties +end + +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end + +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end + +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView +end + +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +end + +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements +end + +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end + +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end + +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end + +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end + +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end + +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, 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 vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, 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 vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, 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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, 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 vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, 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 vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeUsageFlagsKHR = VkFlags + +const VkVideoDecodeFlagsKHR = VkFlags + +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR +end + +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR +end + +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264AspectRatioIdc::UInt32 begin 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 @@ -9099,11533 +10493,22060 @@ end STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end + +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] +end + +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] +end + +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end + +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end + +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end + +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end + +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end + +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end + +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 +end + +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end + +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end + +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end + +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 +end + +struct VkVideoEncodeH264SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc +end + +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} +end + +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 +end + +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} +end + +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc +end + +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR +end + +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +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 + +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] +end + +struct StdVideoH265HrdParameters + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] +end + +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] +end + +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] +end + +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end + +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +# 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 -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +@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 -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +# 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 -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +@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 StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +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 -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +# 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 -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +# 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 -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat end -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) end -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} +# 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 -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +@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 VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end -struct VkVideoDecodeH264ProfileInfoKHR +struct VkDisplayPowerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + powerState::VkDisplayPowerStateEXT end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkDeviceEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + deviceEvent::VkDeviceEventTypeEXT end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkDisplayEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + displayEvent::VkDisplayEventTypeEXT end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkSwapchainCounterCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + surfaceCounters::VkSurfaceCounterFlagsEXT end -struct VkVideoDecodeH264PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} +# 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 -struct VkVideoDecodeH264DpbSlotInfoKHR +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +struct VkMultiviewPerViewAttributesInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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 VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkPipelineViewportSwizzleStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} end -struct VkAttachmentSampleCountInfoAMD +@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} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + maxDiscardRectangles::UInt32 end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX +struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo - -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures - -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkFormatProperties2KHR = VkFormatProperties2 +@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 VkImageFormatProperties2KHR = VkImageFormatProperties2 +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 +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 VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +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_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +const VkDebugUtilsMessengerEXT_T = Cvoid -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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 -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +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 -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# 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 vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) 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) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits +const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end -struct VkImportMemoryFdInfoKHR +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkMemoryFdPropertiesKHR +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 end -struct VkMemoryGetFdInfoKHR +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + maxSampleLocationGridSize::VkExtent2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags - -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits - -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags +@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 -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end -const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) -const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@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 VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD -struct VkImportSemaphoreFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 end -struct VkSemaphoreGetFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits + shaderSMBuiltins::VkBool32 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) +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} end -struct VkPhysicalDevicePushDescriptorPropertiesKHR +struct VkImageDrmFormatModifierExplicitCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} 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) +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +# 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 VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +const VkValidationCacheEXT_T = Cvoid -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end +const VkValidationCacheCreateFlagsEXT = VkFlags -struct VkPresentRegionsKHR +struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate - -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType - -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags - -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -# 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_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) 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 +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} end -struct VkSharedPresentSurfaceCapabilitiesKHR +struct VkPhysicalDeviceShadingRateImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -const VkExternalFencePropertiesKHR = VkExternalFenceProperties +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -const VkFenceImportFlagsKHR = VkFenceImportFlags +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits +const VkAccelerationStructureNV_T = Cvoid -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint +@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 VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +const VkGeometryTypeNV = VkGeometryTypeKHR -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + 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 end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@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 -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR -@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 +@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 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 +@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 -@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 +const VkGeometryFlagsKHR = VkFlags -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 -end +const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkAcquireProfilingLockFlagsKHR = VkFlags +const VkGeometryInstanceFlagsKHR = VkFlags -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 end -struct VkPerformanceCounterKHR +struct VkRayTracingPipelineCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 end -struct VkPerformanceCounterDescriptionKHR +struct VkGeometryTrianglesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkGeometryAABBNV sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV 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) +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR 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) +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} end -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} +struct VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} end -struct VkAcquireProfilingLockInfoKHR +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV end -struct VkPerformanceQuerySubmitInfoKHR +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::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} +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +const VkTransformMatrixNV = VkTransformMatrixKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +const VkAabbPositionsNV = VkAabbPositionsKHR -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +# 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} -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +# 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} -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +# 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} -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) 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) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +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 -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) end -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) 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) +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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) 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) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo - -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion - -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion - -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange - -const VkChromaLocationKHR = VkChromaLocation - -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo - -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +# 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 -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD end -const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties +const VkTimeDomainEXT = VkTimeDomainKHR -const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) -const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) 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} +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end -# 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 vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +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) +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 -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +@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 -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) +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures -struct VkPhysicalDeviceShaderClockFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 -end +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 end -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +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 StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 end -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -struct StdVideoH265HrdFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) - return getfield(x, f) +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +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 StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct StdVideoH265VpsFlags - data::NTuple{4, UInt8} +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag - ref[] +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -struct StdVideoH265ProfileTierLevelFlags - data::NTuple{4, UInt8} +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) - return getfield(x, f) +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag - ref[] +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 end -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +# 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) 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} +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) - return getfield(x, f) +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag - ref[] +@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 -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +@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 -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +@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 StdVideoH265SpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +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::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end ref[] end -struct StdVideoH265ShortTermRefPicSetFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 end -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +# 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 -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkVideoDecodeH265PictureInfoKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} + localDimmingSupport::VkBool32 end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} + localDimmingEnable::VkBool32 end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +# 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + fragmentDensityMapAttachment::VkAttachmentReference end -const VkDriverIdKHR = VkDriverId +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end -const VkConformanceVersionKHR = VkConformanceVersion +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkShaderCorePropertiesFlagsAMD = VkFlags -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end -const VkSemaphoreTypeKHR = VkSemaphoreType +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 +end -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +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 -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +const VkComponentTypeNV = VkComponentTypeKHR -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +const VkScopeNV = VkScopeKHR -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkFragmentShadingRateAttachmentInfoKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + cooperativeMatrixSupportedStages::VkShaderStageFlags end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +# 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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + coverageReductionMode::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPipelineCoverageReductionStateCreateInfoNV 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 + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceProvokingVertexFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +end -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkHeadlessSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + flags::VkHeadlessSurfaceCreateFlagsEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkLineRasterizationModeEXT = VkLineRasterizationMode -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +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 -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +# 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 -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} +# 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 VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +# 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 vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) 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 +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 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutableInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} +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 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} -end +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -struct VkPresentIdKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} -end +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -struct VkPhysicalDevicePresentIdFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentId::VkBool32 -end +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +const VkImageSubresource2EXT = VkImageSubresource2 -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkAccessFlags2KHR = VkAccessFlags2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -const VkSubmitFlagsKHR = VkSubmitFlags +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minPlacedMemoryMapAlignment::VkDeviceSize +end -struct VkQueueFamilyCheckpointProperties2NV +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + pPlacedAddress::Ptr{Cvoid} end -struct VkCheckpointData2NV +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkIndirectCommandsLayoutNV_T = Cvoid -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) -end +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end +const VkIndirectStateFlagsNV = VkFlags -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +@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 -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + deviceGeneratedCommands::VkBool32 end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkGraphicsShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkGraphicsPipelineShaderGroupsCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end -const VkBufferCopy2KHR = VkBufferCopy2 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end -const VkImageCopy2KHR = VkImageCopy2 +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 VkImageBlit2KHR = VkImageBlit2 +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +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 VkImageResolve2KHR = VkImageResolve2 +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = 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_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = 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_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 - -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 - -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties - -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements - -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} - -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -const VkDebugReportCallbackEXT_T = Cvoid +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 +end -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} +const VkDeviceMemoryReportFlagsEXT = VkFlags -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMemoryReport::VkBool32 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 +struct VkDeviceMemoryReportCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 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} +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} -struct VkDebugReportCallbackCreateInfoEXT +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT 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 VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -# 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} +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -struct VkDebugMarkerObjectNameInfoEXT +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + presentBarrier::VkBool32 end -struct VkDebugMarkerObjectTagInfoEXT +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + presentBarrierSupported::VkBool32 end -struct VkDebugMarkerMarkerInfoEXT +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + presentBarrierEnable::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkDedicatedAllocationImageCreateInfoNV +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + diagnosticsConfig::VkBool32 end -struct VkDedicatedAllocationBufferCreateInfoNV +struct VkDeviceDiagnosticsConfigCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + flags::VkDeviceDiagnosticsConfigFlagsNV end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags +const VkTileShadingRenderPassFlagsQCOM = VkFlags -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDeviceTileShadingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkPhysicalDeviceTileShadingPropertiesQCOM 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 + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D 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) +struct VkPerTileBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) 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) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -const VkCuModuleNVX_T = Cvoid +const VkAccelerationStructureKHR_T = Cvoid -const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} -const VkCuFunctionNVX_T = Cvoid +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize +end -const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -struct VkCuFunctionCreateInfoNVX +struct VkDescriptorAddressInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -struct VkCuLaunchInfoNVX +struct VkDescriptorBufferBindingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} + +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkImageViewHandleInfoNVX +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} imageView::VkImageView - descriptorType::VkDescriptorType +end + +struct VkSamplerCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} sampler::VkSampler end -struct VkImageViewAddressPropertiesNVX +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + opaqueCaptureDescriptorData::Ptr{Cvoid} end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -# 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_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) 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) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) 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 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +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) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) 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 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -const VkExternalMemoryHandleTypeFlagsNV = VkFlags +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -@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 +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -const VkExternalMemoryFeatureFlagsNV = VkFlags +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) 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 vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + graphicsPipelineLibrary::VkBool32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT +struct VkGraphicsPipelineLibraryCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 + flags::VkGraphicsPipelineLibraryFlagsEXT end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT + shaderEarlyAndLateFragmentTests::VkBool32 end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} 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) +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} 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 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -struct VkDisplayEventInfoEXT +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) 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) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 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 +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcr2plane444Formats::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + transform::VkSurfaceTransformFlagBitsKHR end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end +const VkImageCompressionFlagsEXT = VkFlags -@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 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + imageCompressionControl::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkImageCompressionControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +struct VkImageCompressionPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + attachmentFeedbackLoopLayout::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkHdrMetadataEXT +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceFaultFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize +end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -const VkDebugUtilsMessengerEXT_T = Cvoid +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} +end -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 +end -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} -@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 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +end + +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + mutableDescriptorType::VkBool32 end -struct VkDebugUtilsMessengerCallbackDataEXT +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} +end + +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT + +struct VkMutableDescriptorTypeCreateInfoEXT 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} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkVertexInputBindingDescription2EXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 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} +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +struct VkPhysicalDeviceDrmPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +const VkDeviceAddressBindingFlagsEXT = VkFlags -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + reportAddressBinding::VkBool32 end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +struct VkSubpassShadingPipelineCreateInfoHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassShading::VkBool32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end +const VkRemoteAddressNV = Ptr{Cvoid} -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkMemoryGetRemoteAddressInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryRDMA::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +end -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +const VkPipelineInfoEXT = VkPipelineInfoKHR -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkSampleLocationsInfoEXT +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} -end - -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + frameBoundary::VkBool32 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkFrameBoundaryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + multisampledRenderToSingleSampled::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + optimal::VkBool32 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -struct VkMultisamplePropertiesEXT +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} + +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) 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 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +end -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) 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 +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + colorWriteEnable::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPipelineColorWriteCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesListEXT +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + minLod::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + minLod::Cfloat end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkPhysicalDeviceMultiDrawFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + multiDraw::VkBool32 end -struct VkImageDrmFormatModifierPropertiesEXT +struct VkPhysicalDeviceMultiDrawPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 + maxMultiDrawCount::UInt32 end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} + +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -const VkValidationCacheEXT_T = Cvoid +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImageFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT_T = Cvoid -# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT = Ptr{VkMicromapEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -@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 +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) 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 +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} + pVersionData::Ptr{UInt8} 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) +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} end -const VkAccelerationStructureNV_T = Cvoid - -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkGeometryTypeKHR::UInt32 begin - 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 +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -const VkGeometryTypeNV = VkGeometryTypeKHR +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -@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 +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -const VkGeometryFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagsNV = VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} + +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -const VkAabbPositionsNV = VkAabbPositionsKHR +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterShadingRate::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkSamplerBorderColorComponentMappingCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + components::VkComponentMapping + srgb::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pageableDeviceLocalMemory::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) 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) +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 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) +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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) +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 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) +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 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) +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) 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 +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkRenderPassStripeInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + stripeArea::VkRect2D end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkRenderPassStripeBeginInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT +struct VkRenderPassStripeSubmitInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageViewType::VkImageViewType + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -struct VkFilterCubicImageViewImageFormatPropertiesEXT +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 + fragmentDensityMapOffset::VkBool32 end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -struct VkImportMemoryHostPointerInfoEXT +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} end -struct VkMemoryHostPointerPropertiesEXT +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT + +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize +end + +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + indirectCopy::VkBool32 end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + supportedQueues::VkQueueFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = 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_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV 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 +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 end -struct VkCalibratedTimestampInfoEXT +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) 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) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV 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 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV 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 + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + imageCompressionControlSwapchain::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::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) +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + maxCommandBufferNestingLevel::UInt32 end -struct VkCheckpointDataNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + acquireUnmodifiedMemory::VkBool32 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) +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) 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) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +end -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) end -const VkShaderCorePropertiesFlagsAMD = VkFlags +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +end -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +end -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +end -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +end -@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 +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 end -struct VkValidationFeaturesEXT +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + disallowMerging::VkBool32 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 +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 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 +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -struct VkCooperativeMatrixPropertiesNV +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end + +struct VkRenderPassSubpassFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +end + +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} +const VkTensorARM_T = Cvoid -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorARM = Ptr{VkTensorARM_T} -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorViewARM_T = Cvoid -@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 +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +const VkTensorCreateFlagsARM = VkFlags64 -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 + +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkFramebufferMixedSamplesCombinationNV +struct VkTensorViewCreateInfoARM 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 - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 + tensor::VkTensorARM end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +struct VkWriteDescriptorSetTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT +struct VkTensorMemoryBarrierARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT +struct VkTensorDependencyInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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) +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} 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 +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT +struct VkCopyTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 + tensor::VkTensorARM end -struct VkPipelineRasterizationLineStateCreateInfoEXT +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits 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) +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM 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 + descriptorBufferTensorDescriptors::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} +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkTensorCaptureDescriptorDataInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + tensorView::VkTensorViewARM end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = 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_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = 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_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = 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 VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = 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 vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 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) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -const VkPresentScalingFlagsEXT = VkFlags +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) end -const VkPresentGravityFlagsEXT = VkFlags +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -struct VkSurfacePresentModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR +const VkOpticalFlowSessionNV_T = Cvoid + +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} + +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentScalingCapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentModeCompatibilityEXT +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + opticalFlow::VkBool32 end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkPhysicalDeviceOpticalFlowPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -struct VkSwapchainPresentFenceInfoEXT +struct VkOpticalFlowImageFormatInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + usage::VkOpticalFlowUsageFlagsNV end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + format::VkFormat end -struct VkSwapchainPresentModeInfoEXT +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkOpticalFlowSessionCreatePrivateDataInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -struct VkReleaseSwapchainImagesInfoEXT +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV_T = Cvoid +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyDithering::VkBool32 end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 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} +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + antiLag::VkBool32 end -struct VkGeneratedCommandsInfoNV +struct VkAntiLagPresentationInfoAMD 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 + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkAntiLagDataAMD 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 vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, 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 vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +const VkShaderEXT_T = Cvoid + +const VkShaderEXT = Ptr{VkShaderEXT_T} + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 + shaderObject::VkBool32 end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -struct VkRenderPassTransformBeginInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkDeviceMemoryReportFlagsEXT = VkFlags +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -struct VkDeviceMemoryReportCallbackDataEXT +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + tileProperties::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + amigoProfiling::VkBool32 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkAmigoProfilingSubmitInfoSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + multiviewPerViewViewports::VkBool32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + rayTracingInvocationReorder::VkBool32 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkPhysicalDeviceCooperativeVectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -const VkPrivateDataSlotEXT = VkPrivateDataSlot - -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags - -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures - -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo - -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) +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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + extendedSparseAddressSpace::VkBool32 end -const VkAccelerationStructureKHR_T = Cvoid - -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + legacyVertexAttributes::VkBool32 end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + nativeUnalignedPerformance::VkBool32 end -struct VkDescriptorAddressInfoEXT +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end + +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDescriptorBufferBindingInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + shaderCoreBuiltins::VkBool32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkDescriptorGetInfoEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + presentID::UInt64 end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + queueType::VkOutOfBandQueueTypeNV end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkDataGraphPipelineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkDataGraphPipelinePropertyQueryResultARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + flags::VkDataGraphPipelineDispatchFlagsARM end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM +end + +struct VkDataGraphProcessingEngineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureMotionInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + multiviewPerViewRenderAreas::VkBool32 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 +end + +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkBlitImageCubicWeightsInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + cubicRangeClamp::VkBool32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + tileMemoryHeap::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -struct VkImageSubresource2EXT +struct VkTileMemoryRequirementsQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + size::VkDeviceSize + alignment::VkDeviceSize end -struct VkImageCompressionPropertiesEXT +struct VkTileMemoryBindInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + memory::VkDeviceMemory end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} + +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + hdmi3DSupported::VkBool32 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRawAccessChainsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRawAccessChains::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 -end +const VkExternalComputeQueueNV_T = Cvoid -struct VkPhysicalDeviceFaultFeaturesEXT +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + reservedExternalQueues::UInt32 end -struct VkDeviceFaultCountsEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize -end - -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize + preferredQueue::VkQueue end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkExternalComputeQueueDataParamsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndex::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 -end - -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} + shaderFloat16VectorAtomics::VkBool32 end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT - -struct VkMutableDescriptorTypeCreateInfoEXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + shaderReplicatedComposites::VkBool32 end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + rayTracingValidation::VkBool32 end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkDeviceAddressBindingFlagsEXT = VkFlags +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} - -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} - -struct VkMemoryGetRemoteAddressInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPipelineInfoEXT = VkPipelineInfoKHR +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkSubpassResolvePerformanceQueryEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - optimal::VkBool32 +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkMultisampledRenderToSingleSampledInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPipelineColorWriteCreateInfoEXT +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} + allowClusterAccelerationStructure::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkImageViewMinLodCreateInfoEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 -end - -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 -end - -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 + enablePartitionTranslation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 -end - -const VkMicromapEXT_T = Cvoid - -const VkMicromapEXT = Ptr{VkMicromapEXT_T} - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkPartitionedAccelerationStructureInstancesInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkBuildPartitionedAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkBuildMicromapFlagsEXT = VkFlags - -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkMicromapCreateFlagsEXT = VkFlags - -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 -end +const VkIndirectExecutionSetEXT_T = Cvoid -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} -end +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) -end +const VkIndirectCommandsLayoutEXT_T = Cvoid -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 -end +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags -struct VkMicromapVersionInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkCopyMicromapToMemoryInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -struct VkCopyMemoryToMicromapInfoEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkCopyMicromapInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkMicromapBuildSizesInfoEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT -end - -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectCommandsLayoutCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkGeneratedCommandsPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + index::UInt32 + shader::VkShaderEXT end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkDescriptorSetBindingReferenceVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA sType::VkStructureType pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 + imageAlignmentControl::VkBool32 end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA sType::VkStructureType pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 + supportedImageAlignmentMask::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM +struct VkImageAlignmentControlCreateInfoMESA sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 + maximumRequestedAlignment::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM +struct VkPhysicalDeviceDepthClampControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D + depthClampControl::VkBool32 end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM +struct VkPipelineViewportDepthClampControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} -end - -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize -end - -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - indirectCopy::VkBool32 + hdrVivid::VkBool32 end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV +struct VkHdrVividDynamicMetadataHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 - -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 - -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineOpacityMicromap::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeRobustness::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + fragmentDensityMapLayered::VkBool32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + maxFragmentDensityMapLayers::UInt32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + presentMetering::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end + +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] +end + +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] +end + +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = 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_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = 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_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkRenderPassCreationControlEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - disallowMerging::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_display = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV_T = Cvoid - -const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 1 +const VK_KHR_external_fence_fd = 1 -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20695,13 +32616,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20773,7 +32694,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20879,7 +32800,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20897,16 +32818,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21149,7 +33076,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21273,7 +33200,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21343,6 +33270,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21387,10 +33326,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21451,6 +33396,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21495,7 +33452,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21525,7 +33482,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21577,9 +33534,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21601,6 +33564,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21631,7 +33600,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21651,6 +33620,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21665,7 +33640,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21681,6 +33656,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21699,9 +33694,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21717,6 +33718,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21741,6 +33754,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21759,6 +33784,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21781,7 +33812,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21791,6 +33822,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21815,12 +33858,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21833,6 +33900,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/x86_64-apple-darwin14.jl b/lib/x86_64-apple-darwin14.jl index 4676c88..e3a122f 100644 --- a/lib/x86_64-apple-darwin14.jl +++ b/lib/x86_64-apple-darwin14.jl @@ -133,6 +133,7 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -147,21 +148,26 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -382,6 +388,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -432,8 +488,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -441,10 +526,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -456,9 +537,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -473,7 +551,6 @@ end 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 @@ -486,6 +563,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -494,6 +572,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -529,6 +608,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -594,7 +675,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -602,15 +682,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -618,6 +692,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -633,14 +709,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -665,11 +744,7 @@ end 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 @@ -677,16 +752,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -700,11 +769,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -714,8 +784,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -728,8 +816,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -765,8 +851,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -807,6 +891,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -821,6 +907,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -833,26 +921,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -861,6 +967,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -874,19 +1004,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -895,7 +1255,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -916,6 +1275,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -929,6 +1291,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -968,6 +1331,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -987,11 +1351,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1006,6 +1377,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1019,11 +1393,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1049,10 +1450,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1060,6 +1464,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1086,6 +1521,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1093,10 +1529,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1154,7 +1597,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1162,12 +1613,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1425,6 +1878,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1433,7 +1888,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1488,6 +1958,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1525,6 +1998,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1677,20 +2151,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1701,6 +2177,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1721,6 +2198,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1736,6 +2216,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1859,7 +2340,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1869,7 +2352,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1888,6 +2373,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1901,15 +2387,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1941,11 +2431,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2004,6 +2496,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2039,13 +2533,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2073,16 +2569,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2098,6 +2603,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2126,7 +2632,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2166,20 +2674,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2235,6 +2749,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2255,6 +2774,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2281,11 +2801,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2309,6 +2832,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2333,8 +2857,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2343,6 +2867,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2354,15 +2880,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2474,6 +3001,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2485,10 +3014,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2508,6 +3040,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2525,6 +3059,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2535,6 +3070,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3668,6 +4204,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3709,6 +4253,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3723,9 +4275,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5330,6 +5915,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5344,7 +5930,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5368,6 +5958,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5394,6 +5985,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6308,6 +6903,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6337,6 +6934,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6357,11 +6955,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7148,9 +7748,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7555,16 +8158,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8098,967 +8741,1718 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 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 +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkMemoryUnmapFlags = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR_T = Cvoid +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR_T = Cvoid +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end +const VkSurfaceKHR_T = Cvoid -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags +@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 -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} -end +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) -end +const VkSwapchainKHR_T = Cvoid -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +# 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 vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -const VkVideoDecodeUsageFlagsKHR = VkFlags +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end -const VkVideoDecodeFlagsKHR = VkFlags +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 -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, 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 vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, 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 vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end + +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end + +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 +end + +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR +end + +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +end + +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end + +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties +end + +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end + +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end + +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView +end + +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +end + +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements +end + +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end + +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end + +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end + +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end + +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end + +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, 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 vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, 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 vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, 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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, 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 vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, 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 vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeUsageFlagsKHR = VkFlags + +const VkVideoDecodeFlagsKHR = VkFlags + +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR +end + +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR +end + +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264AspectRatioIdc::UInt32 begin 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 @@ -9081,11571 +10475,22140 @@ end STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end + +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] +end + +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] +end + +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end + +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end + +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end + +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end + +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end + +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end + +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 +end + +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end + +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end + +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end + +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 +end + +struct VkVideoEncodeH264SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc +end + +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} +end + +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 +end + +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} +end + +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc +end + +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR +end + +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +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 + +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] +end + +struct StdVideoH265HrdParameters + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] +end + +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] +end + +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] +end + +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end + +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat end -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT end -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +# 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 -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) -end +const VkSurfaceCounterFlagsEXT = VkFlags -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +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 -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +@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 StdVideoH264PpsFlags - data::NTuple{4, UInt8} +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT end -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +# 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 Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) end -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) end -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) end -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +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 Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) end -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 end -@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags - -struct VkVideoDecodeH264ProfileInfoKHR +struct VkPresentTimesInfoGOOGLE sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} end -struct VkVideoDecodeH264CapabilitiesKHR +# 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + perViewPositionAllComponents::VkBool32 end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkMultiviewPerViewAttributesInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::VkBool32 end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +@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} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} end -struct VkVideoDecodeH264PictureInfoKHR +@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} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} + maxDiscardRectangles::UInt32 end -struct VkVideoDecodeH264DpbSlotInfoKHR +struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat end -struct VkRenderingFragmentDensityMapAttachmentInfoEXT +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + depthClipEnable::VkBool32 end -struct VkAttachmentSampleCountInfoAMD +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end -struct VkMultiviewPerViewAttributesInfoNVX +struct VkHdrMetadataEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} - -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 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} +const VkDebugUtilsMessengerEXT_T = Cvoid -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +@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 -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +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 -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# 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 vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) 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) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags - -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits +const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end -struct VkImportMemoryFdInfoKHR +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkMemoryFdPropertiesKHR +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 end -struct VkMemoryGetFdInfoKHR +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + maxSampleLocationGridSize::VkExtent2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) 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) +@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 -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 end -const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -struct VkImportSemaphoreFdInfoKHR +struct VkPipelineCoverageToColorStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 end -struct VkSemaphoreGetFdInfoKHR +@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} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} 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} +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -struct VkPhysicalDevicePushDescriptorPropertiesKHR +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{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} +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +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) +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +# 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 VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +const VkValidationCacheEXT_T = Cvoid -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end +const VkValidationCacheCreateFlagsEXT = VkFlags -struct VkPresentRegionsKHR +struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate - -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType - -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags - -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -# 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_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -const VkAttachmentDescription2KHR = VkAttachmentDescription2 +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -const VkAttachmentReference2KHR = VkAttachmentReference2 +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -const VkSubpassDescription2KHR = VkSubpassDescription2 +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -const VkSubpassDependency2KHR = VkSubpassDependency2 +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport -const VkSubpassBeginInfoKHR = VkSubpassBeginInfo +@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 -const VkSubpassEndInfoKHR = VkSubpassEndInfo +@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 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +# 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +const VkAccelerationStructureNV_T = Cvoid -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +@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 VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +const VkGeometryTypeNV = VkGeometryTypeKHR -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + 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 +end -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR -const VkExternalFencePropertiesKHR = VkExternalFenceProperties +@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 -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +@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 VkFenceImportFlagsKHR = VkFenceImportFlags +const VkGeometryFlagsKHR = VkFlags -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits +const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VkGeometryInstanceFlagsKHR = VkFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +@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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end +const VkBuildAccelerationStructureFlagsKHR = VkFlags -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR -@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 +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 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 +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 -@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 +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 -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize end -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV end -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR +struct VkGeometryNV sType::VkStructureType pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +struct VkAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} end -struct VkPerformanceCounterKHR +struct VkAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV end -struct VkPerformanceCounterDescriptionKHR +struct VkBindAccelerationStructureMemoryInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkWriteDescriptorSetAccelerationStructureNV 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 - -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} - -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} end -struct VkAcquireProfilingLockInfoKHR +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV end -struct VkPerformanceQuerySubmitInfoKHR +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::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} +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +const VkTransformMatrixNV = VkTransformMatrixKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +const VkAabbPositionsNV = VkAabbPositionsKHR -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +# 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} -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +# 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} -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR -end +# 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} -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR -end +# 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} -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +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 -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) -const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} +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 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements +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 -const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end -const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end -const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 +function vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end -const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end -const VkMemoryRequirements2KHR = VkMemoryRequirements2 +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end -const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end -# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -const VkChromaLocationKHR = VkChromaLocation +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +const VkPipelineCompilerControlFlagsAMD = VkFlags -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +const VkTimeDomainEXT = VkTimeDomainKHR -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) 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) +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 -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +@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 -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 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} +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures -# 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} +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits -# 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} +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags -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 +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback -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 VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures - -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features - -struct VkPhysicalDeviceShaderClockFeaturesKHR +struct VkPhysicalDeviceMeshShaderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 + 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 -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 end -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end +# 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} -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -struct StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -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 +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct StdVideoH265HrdFlags - data::NTuple{4, UInt8} +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 Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) - return getfield(x, f) +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 end -struct StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} -struct StdVideoH265VpsFlags - data::NTuple{4, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag - ref[] +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -struct StdVideoH265ProfileTierLevelFlags - data::NTuple{4, UInt8} +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) - return getfield(x, f) +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag - ref[] -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc -end +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) 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} +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) - return getfield(x, f) +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag - ref[] +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 end -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +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 -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 end -struct StdVideoH265SpsFlags - data::NTuple{4, UInt8} +@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 -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +@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::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end ref[] end -struct StdVideoH265ShortTermRefPicSetFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +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 StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +# 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 -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkVideoDecodeH265PictureInfoKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} + localDimmingSupport::VkBool32 end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} + localDimmingEnable::VkBool32 end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +# 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + fragmentDensityMapAttachment::VkAttachmentReference end -const VkDriverIdKHR = VkDriverId - -const VkConformanceVersionKHR = VkConformanceVersion - -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +const VkShaderCorePropertiesFlagsAMD = VkFlags -const VkSemaphoreTypeKHR = VkSemaphoreType +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 +end -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +@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 VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -struct VkFragmentShadingRateAttachmentInfoKHR +struct VkValidationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} -end +const VkComponentTypeNV = VkComponentTypeKHR -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +const VkScopeNV = VkScopeKHR + +struct VkCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV 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 + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + cooperativeMatrixSupportedStages::VkShaderStageFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +@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 -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + coverageReductionMode::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout - -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -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) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT end -const VkDeferredOperationKHR_T = Cvoid - -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} - -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT end -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkLineRasterizationModeEXT = VkLineRasterizationMode -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +# 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 -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) 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 +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 -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 -end +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline +# 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 VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) end -struct VkPipelineExecutableInfoKHR +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 + extendedDynamicState::VkBool32 end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] -end +# 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} -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -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 void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +# 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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -struct VkPresentIdKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -struct VkPhysicalDevicePresentIdFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentId::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 -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end -const VkAccessFlags2KHR = VkAccessFlags2 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end -const VkSubmitFlagsKHR = VkSubmitFlags +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +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 -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -struct VkQueueFamilyCheckpointProperties2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 -end +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -struct VkCheckpointData2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} -end +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkImageSubresource2EXT = VkImageSubresource2 -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} + +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + minPlacedMemoryMapAlignment::VkDeviceSize end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + pPlacedAddress::Ptr{Cvoid} end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -const VkCopyImageInfo2KHR = VkCopyImageInfo2 +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -const VkBufferCopy2KHR = VkBufferCopy2 +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -const VkImageCopy2KHR = VkImageCopy2 +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -const VkImageBlit2KHR = VkImageBlit2 +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -const VkImageResolve2KHR = VkImageResolve2 +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) -end +const VkIndirectCommandsLayoutNV_T = Cvoid -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) -end +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) -end +const VkIndirectStateFlagsNV = VkFlags -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +@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 -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +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 -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkIndirectCommandsLayoutTokenNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + 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 VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} - -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +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 - -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = 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_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -const VkDebugReportCallbackEXT_T = Cvoid +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) 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 +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkDebugReportFlagsEXT = VkFlags +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -# 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 VkPhysicalDeviceInheritedViewportScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 +end -struct VkDebugReportCallbackCreateInfoEXT +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) -const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -# 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} +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat 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) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -struct VkPipelineRasterizationStateRasterizationOrderAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 end -struct VkDebugMarkerObjectNameInfoEXT +const VkDeviceMemoryReportFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + deviceMemoryReport::VkBool32 end -struct VkDebugMarkerObjectTagInfoEXT +struct VkDeviceMemoryReportCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 end -struct VkDebugMarkerMarkerInfoEXT +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} + +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR + +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -struct VkDedicatedAllocationBufferCreateInfoNV +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + maxCustomBorderColorSamplers::UInt32 end -struct VkDedicatedAllocationMemoryAllocateInfoNV +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + presentBarrier::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkSurfaceCapabilitiesPresentBarrierNV 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 + presentBarrierSupported::VkBool32 end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 + presentBarrierEnable::VkBool32 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} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# 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} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# 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} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -# 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = 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 +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) 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) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 end -const VkCuModuleNVX_T = Cvoid +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end -const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 +end -const VkCuFunctionNVX_T = Cvoid +const VkTileShadingRenderPassFlagsQCOM = VkFlags -const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} +struct VkPhysicalDeviceTileShadingFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceTileShadingPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkCuFunctionCreateInfoNVX +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D end -struct VkCuLaunchInfoNVX +struct VkPerTileBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -struct VkImageViewHandleInfoNVX +struct VkDescriptorAddressInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -struct VkImageViewAddressPropertiesNVX +struct VkDescriptorBufferBindingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + address::VkDeviceAddress + usage::VkBufferUsageFlags 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) +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} end -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) end -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) 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 +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} 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 +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV +struct VkBufferCaptureDescriptorDataInfoEXT 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 - -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + buffer::VkBuffer end -struct VkExternalMemoryImageCreateInfoNV +struct VkImageCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV + image::VkImage end -struct VkExportMemoryAllocateInfoNV +struct VkImageViewCaptureDescriptorDataInfoEXT 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 + imageView::VkImageView end -struct VkValidationFlagsEXT +struct VkSamplerCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} + sampler::VkSampler end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures - -struct VkImageViewASTCDecodeModeEXT +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + opaqueCaptureDescriptorData::Ptr{Cvoid} end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV end -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRenderingEnable::VkBool32 +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) -const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +end -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) - ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) -const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkReleaseDisplayEXT(physicalDevice, display) - ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkSurfaceCounterFlagsEXT = VkFlags +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags -struct VkSurfaceCapabilities2EXT +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT 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 + graphicsPipelineLibrary::VkBool32 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) +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT 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 +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 end -struct VkDisplayPowerInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkDeviceEventInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkDisplayEventInfoEXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} + +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags + +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags + +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkAccelerationStructureMotionInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat +end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) 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 +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} +end -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPipelineViewportSwizzleStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) +end -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} + +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -struct VkPipelineDiscardRectangleStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) +end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] +end -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + ycbcr2plane444Formats::VkBool32 end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + fragmentDensityMapDeferred::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 -end - -struct VkXYColorEXT - x::Cfloat - y::Cfloat + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkHdrMetadataEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat + transform::VkSurfaceTransformFlagBitsKHR 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 VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 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 +const VkImageCompressionFlagsEXT = VkFlags -@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + imageCompressionControl::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkImageCompressionControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -struct VkDebugUtilsMessengerCallbackDataEXT +struct VkImageCompressionPropertiesEXT 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} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + attachmentFeedbackLoopLayout::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 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) +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPhysicalDeviceFaultFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorType::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) -end +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT + +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkVertexInputBindingDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +struct VkPhysicalDeviceDrmPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +end -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +const VkDeviceAddressBindingFlagsEXT = VkFlags -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + reportAddressBinding::VkBool32 end -struct VkSampleLocationsInfoEXT +struct VkDeviceAddressBindingCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 end -struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + +struct VkSubpassShadingPipelineCreateInfoHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + renderPass::VkRenderPass + subpass::UInt32 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + subpassShading::VkBool32 end -struct VkMultisamplePropertiesEXT +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +end + +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -@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 +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT +const VkRemoteAddressNV = Ptr{Cvoid} + +struct VkMemoryGetRemoteAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT + externalMemoryRDMA::VkBool32 end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) 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 +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +const VkPipelineInfoEXT = VkPipelineInfoKHR -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPipelinePropertiesIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + pipelineIdentifier::NTuple{16, UInt8} end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + pipelinePropertiesIdentifier::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} + +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -struct VkDrmFormatModifierPropertiesListEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + frameBoundary::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkFrameBoundaryEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + multisampledRenderToSingleSampled::VkBool32 end -struct VkImageDrmFormatModifierPropertiesEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 + optimal::VkBool32 end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +struct VkMultisampledRenderToSingleSampledInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -struct VkDrmFormatModifierPropertiesList2EXT +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -const VkValidationCacheEXT_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -struct VkShaderModuleValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) 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) +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits - -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags - -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo - -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures - -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties - -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo - -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} +end -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) 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 +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} + minLod::VkBool32 end -struct VkPhysicalDeviceShadingRateImageFeaturesNV +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 + minLod::Cfloat end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkPhysicalDeviceMultiDrawFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 + multiDraw::VkBool32 end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +struct VkPhysicalDeviceMultiDrawPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiDrawCount::UInt32 end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = 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_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) -const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkPhysicalDeviceShaderTileImageFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkPhysicalDeviceShaderTileImagePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -const VkAccelerationStructureNV_T = Cvoid +const VkMicromapEXT_T = Cvoid -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} +const VkMicromapEXT = Ptr{VkMicromapEXT_T} -@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 +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end -@cenum VkGeometryTypeKHR::UInt32 begin - 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 +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -const VkGeometryTypeNV = VkGeometryTypeKHR +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +end -@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 +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -@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 +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -const VkGeometryFlagsKHR = VkFlags +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end -const VkGeometryFlagsNV = VkGeometryFlagsKHR +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkGeometryInstanceFlagsKHR = VkFlags +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end + +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) +end -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkBuildAccelerationStructureFlagsKHR = VkFlags +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] +end -struct VkRayTracingShaderGroupCreateInfoNV +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkRayTracingPipelineCreateInfoNV +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT 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 + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkGeometryTrianglesNV +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT 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 + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkGeometryAABBNV +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize + pVersionData::Ptr{UInt8} end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkTransformMatrixNV = VkTransformMatrixKHR - -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -const VkAabbPositionsNV = VkAabbPositionsKHR +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) return getfield(x, f) end -function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) - r = Ref{VkAccelerationStructureInstanceKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap ref[] 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} +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = 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_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = 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_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = 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_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = 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 void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) 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) +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) 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) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) 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) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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) +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) 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) +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR - -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR - -struct VkImportMemoryHostPointerInfoEXT +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 end -struct VkMemoryHostPointerPropertiesEXT +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + clusterShadingRate::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = 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_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) 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) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -const VkPipelineCompilerControlFlagsAMD = VkFlags - -struct VkPipelineCompilerControlCreateInfoAMD +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 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 + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -struct VkCalibratedTimestampInfoEXT +struct VkSamplerBorderColorComponentMappingCreateInfoEXT 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 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, 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 vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + components::VkComponentMapping + srgb::VkBool32 end -struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT 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 + pageableDeviceLocalMemory::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) 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 +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkPhysicalDeviceShaderCorePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + shaderCoreCount::UInt32 end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT +struct VkPhysicalDeviceSchedulingControlsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 + imageSlicedViewOf3D::VkBool32 end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo - -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkImageViewSlicedCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 + sliceOffset::UInt32 + sliceCount::UInt32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 + descriptorSetHostMapping::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkDescriptorSetBindingReferenceVALVE 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 + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::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_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = 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} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) 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 +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceRenderPassStripedFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + renderPassStriped::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkPhysicalDeviceRenderPassStripedPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkRenderPassStripeInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 + stripeArea::VkRect2D 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) +struct VkRenderPassStripeBeginInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkRenderPassStripeSubmitInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + fragmentDensityMapOffset::VkBool32 end -struct VkCheckpointDataNV +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D 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} +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 + indirectCopy::VkBool32 end -const VkPerformanceConfigurationINTEL_T = Cvoid +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedQueues::VkQueueFlags +end -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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 +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) 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 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -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 +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 -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) +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV end -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 end -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} - -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -struct VkPerformanceStreamMarkerInfoINTEL +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - marker::UInt32 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkPerformanceOverrideInfoINTEL +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPerformanceConfigurationAcquireInfoINTEL +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline 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} +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 + imageCompressionControlSwapchain::VkBool32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCommandBufferNestingLevel::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 + acquireUnmodifiedMemory::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkRenderPassFragmentDensityMapCreateInfoEXT +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp +end -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 +end -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -const VkShaderCorePropertiesFlagsAMD = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} -@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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} -struct VkValidationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} -@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 +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) 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 +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) 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) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) 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 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags - -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -struct VkPipelineCoverageReductionStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -struct VkFramebufferMixedSamplesCombinationNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) 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) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) 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 +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) 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 +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# 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} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) 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) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +struct VkRenderPassCreationControlEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disallowMerging::VkBool32 end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) -end +const VkDirectDriverLoadingFlagsLUNARG = VkFlags -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 +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +struct VkDirectDriverLoadingInfoLUNARG + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +const VkTensorARM_T = Cvoid -const VkPresentScalingFlagsEXT = VkFlags +const VkTensorARM = Ptr{VkTensorARM_T} -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkTensorViewARM_T = Cvoid + +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPresentGravityFlagsEXT = VkFlags +const VkTensorCreateFlagsARM = VkFlags64 + +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 -struct VkSurfacePresentModeEXT +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkSurfacePresentScalingCapabilitiesEXT +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkSurfacePresentModeCompatibilityEXT +struct VkTensorViewCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + tensor::VkTensorARM end -struct VkSwapchainPresentFenceInfoEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkWriteDescriptorSetTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkSwapchainPresentModeInfoEXT +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -struct VkReleaseSwapchainImagesInfoEXT +struct VkTensorMemoryBarrierARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures - -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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 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 +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} end -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags - -struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV +struct VkTensorCopyARM sType::VkStructureType pNext::Ptr{Cvoid} - maxGraphicsShaderGroupCount::UInt32 - maxIndirectSequenceCount::UInt32 - maxIndirectCommandsTokenCount::UInt32 - maxIndirectCommandsStreamCount::UInt32 - maxIndirectCommandsTokenOffset::UInt32 - maxIndirectCommandsStreamStride::UInt32 - minSequencesCountBufferOffsetAlignment::UInt32 - minSequencesIndexBufferOffsetAlignment::UInt32 - minIndirectCommandsBufferOffsetAlignment::UInt32 + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV +struct VkCopyTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkGraphicsShaderGroupCreateInfoNV +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + tensor::VkTensorARM end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBufferTensorDescriptors::VkBool32 end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -struct VkIndirectCommandsLayoutTokenNV +struct VkTensorCaptureDescriptorDataInfoARM 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} + tensor::VkTensorARM end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + tensorView::VkTensorViewARM end -struct VkGeneratedCommandsInfoNV +struct VkFrameBoundaryTensorsARM 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 + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end + +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -struct VkGeneratedCommandsMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) -const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) -const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) -const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) -const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 + shaderModuleIdentifier::VkBool32 end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties - -struct VkRenderPassTransformBeginInfoQCOM +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end + +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end + +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end + +const VkOpticalFlowSessionNV_T = Cvoid + +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} + +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D + opticalFlow::VkBool32 end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +struct VkPhysicalDeviceOpticalFlowPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -const VkDeviceMemoryReportFlagsEXT = VkFlags +struct VkOpticalFlowImageFormatInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkOpticalFlowUsageFlagsNV +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 + format::VkFormat end -struct VkDeviceMemoryReportCallbackDataEXT +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} +struct VkOpticalFlowSessionCreatePrivateDataInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} +end -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end + +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end + +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkPhysicalDeviceRobustness2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkPhysicalDeviceRobustness2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + legacyDithering::VkBool32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + antiLag::VkBool32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkAntiLagPresentationInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkAntiLagDataAMD sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -const VkPrivateDataSlotEXT = VkPrivateDataSlot +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) +end -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) +end -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo +const VkShaderEXT_T = Cvoid -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo +const VkShaderEXT = Ptr{VkShaderEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +const VkShaderCreateFlagsEXT = VkFlags -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkPhysicalDeviceShaderObjectFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderObject::VkBool32 end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkPhysicalDeviceShaderObjectPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +struct VkShaderCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) -end +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} -@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -struct VkDeviceDiagnosticsConfigCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -const VkAccelerationStructureKHR_T = Cvoid +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkDescriptorAddressInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkDescriptorBufferBindingInfoEXT +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + tileProperties::VkBool32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +end -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkDescriptorGetInfoEXT +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + amigoProfiling::VkBool32 end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkAmigoProfilingSubmitInfoSEC sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + multiviewPerViewViewports::VkBool32 end -struct VkImageViewCaptureDescriptorDataInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + rayTracingInvocationReorder::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} - -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedSparseAddressSpace::VkBool32 end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyVertexAttributes::VkBool32 end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nativeUnalignedPerformance::VkBool32 end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkLayerSettingsCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags - -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + shaderCoreBuiltins::VkBool32 end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + pipelineLibraryGroupHandles::VkBool32 end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + dynamicRenderingUnusedAttachments::VkBool32 end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkLatencySleepModeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + presentID::UInt64 + marker::VkLatencyMarkerNV end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkLatencyTimingsFrameReportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkGetLatencyMarkerInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +struct VkLatencySubmissionPresentIdNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags - -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags - -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +struct VkSwapchainLatencyCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +struct VkOutOfBandQueueTypeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + queueType::VkOutOfBandQueueTypeNV end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] -end +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -struct VkAccelerationStructureGeometryMotionTrianglesDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} + +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) end -struct VkAccelerationStructureMotionInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end + +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkDataGraphPipelineSessionCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + session::VkDataGraphPipelineSessionARM end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkDataGraphPipelineSessionBindPointRequirementARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -struct VkCopyCommandTransformInfoQCOM +struct VkBindDataGraphPipelineSessionMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +struct VkDataGraphPipelineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraphPipeline::VkPipeline +end -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -const VkImageCompressionFlagsEXT = VkFlags +struct VkDataGraphPipelineIdentifierCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineDispatchInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineDispatchFlagsARM end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM end -struct VkImageCompressionControlEXT +struct VkDataGraphProcessingEngineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkImageSubresource2EXT +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkImageCompressionPropertiesEXT +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) +end + +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) +end + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + multiviewPerViewRenderAreas::VkBool32 end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -struct VkPhysicalDeviceFaultFeaturesEXT +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + textureBlockMatch2::VkBool32 end -struct VkDeviceFaultCountsEXT +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize + maxBlockMatchWindow::VkExtent2D end -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + selectableCubicWeights::VkBool32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} - -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + cubicRangeClamp::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -struct VkMutableDescriptorTypeCreateInfoEXT +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 +end + +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + tileMemoryHeap::VkBool32 end -struct VkVertexInputAttributeDescription2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} - -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory end -struct VkPhysicalDeviceDrmPropertiesEXT +struct VkTileMemorySizeInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 + size::VkDeviceSize end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -const VkDeviceAddressBindingFlagsEXT = VkFlags +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) +end -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + hdmi3DSupported::VkBool32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkPhysicalDeviceRawAccessChainsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + shaderRawAccessChains::VkBool32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + reservedExternalQueues::UInt32 end -struct VkSubpassShadingPipelineCreateInfoHUAWEI +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 + preferredQueue::VkQueue end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI +struct VkExternalComputeQueueDataParamsNV sType::VkStructureType pNext::Ptr{Cvoid} - subpassShading::VkBool32 + deviceIndex::UInt32 end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - invocationMask::VkBool32 + commandBufferInheritance::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} - -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16VectorAtomics::VkBool32 end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderReplicatedComposites::VkBool32 end -const VkRemoteAddressNV = Ptr{Cvoid} - -struct VkMemoryGetRemoteAddressInfoNV +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 + rayTracingValidation::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -const VkPipelineInfoEXT = VkPipelineInfoKHR +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterAccelerationStructure::VkBool32 end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkSubpassResolvePerformanceQueryEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - optimal::VkBool32 + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkMultisampledRenderToSingleSampledInfoEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPipelineColorWriteCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkImageViewMinLodCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::Cfloat +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkPhysicalDeviceMultiDrawFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multiDraw::VkBool32 +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceMultiDrawPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} end -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -const VkMicromapEXT_T = Cvoid - -const VkMicromapEXT = Ptr{VkMicromapEXT_T} - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +struct VkAccelerationStructureBuildSizesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + allowClusterAccelerationStructure::VkBool32 end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -const VkBuildMicromapFlagsEXT = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -const VkMicromapCreateFlagsEXT = VkFlags - -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] -end +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags -struct VkMicromapBuildInfoEXT +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize + partitionedAccelerationStructure::VkBool32 end -struct VkMicromapCreateInfoEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 + enablePartitionTranslation::VkBool32 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -struct VkMicromapVersionInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkCopyMicromapToMemoryInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkCopyMicromapInfoEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -struct VkMicromapBuildSizesInfoEXT +struct VkPartitionedAccelerationStructureInstancesInputNV sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkBuildPartitionedAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} + +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} +const VkIndirectExecutionSetEXT_T = Cvoid -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} +const VkIndirectCommandsLayoutEXT_T = Cvoid -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 +end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 +end + +struct VkGeneratedCommandsMemoryRequirementsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkIndirectExecutionSetPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +struct VkIndirectExecutionSetShaderLayoutInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +struct VkIndirectExecutionSetShaderInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} + +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] +end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkIndirectCommandsLayoutCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT +struct VkGeneratedCommandsPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 + pipeline::VkPipeline end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 + index::UInt32 + shader::VkShaderEXT end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkDescriptorSetBindingReferenceVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA sType::VkStructureType pNext::Ptr{Cvoid} - indirectCopy::VkBool32 + imageAlignmentControl::VkBool32 end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA sType::VkStructureType pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) + supportedImageAlignmentMask::UInt32 end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +struct VkImageAlignmentControlCreateInfoMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + maximumRequestedAlignment::UInt32 end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +struct VkPhysicalDeviceDepthClampControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampControl::VkBool32 end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +struct VkPipelineViewportDepthClampControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 - -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 - -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + hdrVivid::VkBool32 end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +struct VkHdrVividDynamicMetadataHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} - -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + pipelineOpacityMicromap::VkBool32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + vertexAttributeRobustness::VkBool32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPhysicalDeviceFormatPackFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + formatPack::VkBool32 end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + fragmentDensityMapLayered::VkBool32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDevicePresentMeteringFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMetering::VkBool32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +struct VkRenderingEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + zeroInitializeDeviceMemory::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = 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_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +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 vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -struct VkRenderPassCreationControlEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disallowMerging::VkBool32 +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +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 VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +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 -const VkDirectDriverLoadingFlagsLUNARG = VkFlags - -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) +end -struct VkDirectDriverLoadingInfoLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -struct VkDirectDriverLoadingListLUNARG +struct VkRayTracingShaderGroupCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT +struct VkRayTracingPipelineInterfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT +struct VkRayTracingPipelineCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} + 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 -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -struct VkShaderModuleIdentifierEXT +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} - -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} -const VkOpticalFlowSessionNV_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} -const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +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 -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -const VkOpticalFlowGridSizeFlagsNV = VkFlags - -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowUsageFlagsNV = VkFlags +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowExecuteFlagsNV = VkFlags +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) +end -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -struct VkOpticalFlowSessionCreateInfoNV +struct VkPhysicalDeviceRayQueryFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV + rayQuery::VkBool32 end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkOpticalFlowExecuteInfoNV +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VkMacOSSurfaceCreateFlagsMVK = VkFlags -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) +struct VkMacOSSurfaceCreateInfoMVK + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMacOSSurfaceCreateFlagsMVK + pView::Ptr{Cvoid} end -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT +const CAMetalLayer = Cvoid + +const VkMetalSurfaceCreateFlagsEXT = VkFlags + +struct VkMetalSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 + flags::VkMetalSurfaceCreateFlagsEXT + pLayer::Ptr{CAMetalLayer} end -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 +# 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 -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D +function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const MTLDevice_id = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const MTLCommandQueue_id = Ptr{Cvoid} -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const MTLBuffer_id = Ptr{Cvoid} -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const MTLTexture_id = Ptr{Cvoid} -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +const __IOSurface = Cvoid + +const IOSurfaceRef = Ptr{__IOSurface} + +const MTLSharedEvent_id = Ptr{Cvoid} + +@cenum VkExportMetalObjectTypeFlagBitsEXT::UInt32 begin + VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 1 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 2 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 4 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 8 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 16 + VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 32 + VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +const VkExportMetalObjectTypeFlagsEXT = VkFlags + +struct VkExportMetalObjectCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + exportObjectType::VkExportMetalObjectTypeFlagBitsEXT end -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC +struct VkExportMetalObjectsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 end -struct VkAmigoProfilingSubmitInfoSEC +struct VkExportMetalDeviceInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 + mtlDevice::MTLDevice_id end -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM +struct VkExportMetalCommandQueueInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 + queue::VkQueue + mtlCommandQueue::MTLCommandQueue_id end -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +struct VkExportMetalBufferInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + mtlBuffer::MTLBuffer_id end -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV +struct VkImportMetalBufferInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV + mtlBuffer::MTLBuffer_id end -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV +struct VkExportMetalTextureInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 + image::VkImage + imageView::VkImageView + bufferView::VkBufferView + plane::VkImageAspectFlagBits + mtlTexture::MTLTexture_id end -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM +struct VkImportMetalTextureInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 + plane::VkImageAspectFlagBits + mtlTexture::MTLTexture_id end -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM +struct VkExportMetalIOSurfaceInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 + image::VkImage + ioSurface::IOSurfaceRef end -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT +struct VkImportMetalIOSurfaceInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 + ioSurface::IOSurfaceRef end -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 +struct VkExportMetalSharedEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + event::VkEvent + mtlSharedEvent::MTLSharedEvent_id end -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkImportMetalSharedEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mtlSharedEvent::MTLSharedEvent_id end -const VkAccelerationStructureCreateFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkExportMetalObjectsEXT ) ( VkDevice device , VkExportMetalObjectsInfoEXT * pMetalObjectsInfo ) +const PFN_vkExportMetalObjectsEXT = Ptr{Cvoid} -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 +function vkExportMetalObjectsEXT(device, pMetalObjectsInfo) + ccall((:vkExportMetalObjectsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkExportMetalObjectsInfoEXT}), device, pMetalObjectsInfo) end -struct VkAccelerationStructureGeometryTrianglesDataKHR +function vkExportMetalObjectsEXT(device, pMetalObjectsInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkExportMetalObjectsInfoEXT}), device, pMetalObjectsInfo) +end + +struct VkImportMemoryMetalHandleInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR + handleType::VkExternalMemoryHandleTypeFlagBits + handle::Ptr{Cvoid} end -struct VkAccelerationStructureGeometryAabbsDataKHR +struct VkMemoryMetalHandlePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize + memoryTypeBits::UInt32 end -struct VkAccelerationStructureGeometryInstancesDataKHR +struct VkMemoryGetMetalHandleInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryMetalHandleEXT ) ( VkDevice device , const VkMemoryGetMetalHandleInfoEXT * pGetMetalHandleInfo , void * * pHandle ) +const PFN_vkGetMemoryMetalHandleEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryMetalHandlePropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHandle , VkMemoryMetalHandlePropertiesEXT * pMemoryMetalHandleProperties ) +const PFN_vkGetMemoryMetalHandlePropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle) + ccall((:vkGetMemoryMetalHandleEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetMetalHandleInfoEXT}, Ptr{Ptr{Cvoid}}), device, pGetMetalHandleInfo, pHandle) end -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) +function vkGetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetMetalHandleInfoEXT}, Ptr{Ptr{Cvoid}}), device, pGetMetalHandleInfo, pHandle) end -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties) + ccall((:vkGetMemoryMetalHandlePropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryMetalHandlePropertiesEXT}), device, handleType, pHandle, pMemoryMetalHandleProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkGetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryMetalHandlePropertiesEXT}), device, handleType, pHandle, pMemoryMetalHandleProperties) end -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VULKAN_H_ = 1 -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VULKAN_CORE_H_ = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_VERSION_1_0 = 1 -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_USE_64_BIT_PTR_DEFINES = 1 -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_HEADER_VERSION = 321 -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_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_FALSE = Cuint(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 = Cuint(1) + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = Cuint(32) + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) + +const VK_UUID_SIZE = Cuint(16) + +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) + +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) + +const VK_MAX_MEMORY_HEAPS = Cuint(16) + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) + +const VK_LUID_SIZE = Cuint(8) + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) + +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) + +const VK_VERSION_1_3 = 1 + +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) + +const VK_VERSION_1_4 = 1 + +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) + +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) + +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_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 + +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_KHR_video_decode_queue = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const VK_KHR_video_encode_h264 = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# 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} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const VK_KHR_video_encode_h265 = 1 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const vulkan_video_codec_h265std = 1 -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 +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -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 +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -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 +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -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_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_video_decode_h264 = 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 VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_dynamic_rendering = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_multiview = 1 -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 +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -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 +const VK_KHR_get_physical_device_properties2 = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -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 +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_shader_draw_parameters = 1 -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_maintenance1 = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_device_group_creation = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_external_memory_capabilities = 1 -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_external_memory = 1 -const VkMacOSSurfaceCreateFlagsMVK = VkFlags +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -struct VkMacOSSurfaceCreateInfoMVK - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMacOSSurfaceCreateFlagsMVK - pView::Ptr{Cvoid} -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_memory_fd = 1 -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -const CAMetalLayer = Cvoid +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkMetalSurfaceCreateFlagsEXT = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -struct VkMetalSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMetalSurfaceCreateFlagsEXT - pLayer::Ptr{CAMetalLayer} -end +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore = 1 -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -const MTLDevice_id = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -const MTLCommandQueue_id = Ptr{Cvoid} +const VK_KHR_external_semaphore_fd = 1 -const MTLBuffer_id = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -const MTLTexture_id = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -const __IOSurface = Cvoid +const VK_KHR_push_descriptor = 1 -const IOSurfaceRef = Ptr{__IOSurface} +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 -const MTLSharedEvent_id = Ptr{Cvoid} +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" -@cenum VkExportMetalObjectTypeFlagBitsEXT::UInt32 begin - VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 1 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 2 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 4 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 8 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 16 - VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 32 - VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +const VK_KHR_shader_float16_int8 = 1 -const VkExportMetalObjectTypeFlagsEXT = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 -struct VkExportMetalObjectCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - exportObjectType::VkExportMetalObjectTypeFlagBitsEXT -end +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkExportMetalObjectsInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} -end +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 -struct VkExportMetalDeviceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mtlDevice::MTLDevice_id -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkExportMetalCommandQueueInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - queue::VkQueue - mtlCommandQueue::MTLCommandQueue_id -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -struct VkExportMetalBufferInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - mtlBuffer::MTLBuffer_id -end +const VK_KHR_imageless_framebuffer = 1 -struct VkImportMetalBufferInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mtlBuffer::MTLBuffer_id -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -struct VkExportMetalTextureInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - imageView::VkImageView - bufferView::VkBufferView - plane::VkImageAspectFlagBits - mtlTexture::MTLTexture_id -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -struct VkImportMetalTextureInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - plane::VkImageAspectFlagBits - mtlTexture::MTLTexture_id -end +const VK_KHR_create_renderpass2 = 1 -struct VkExportMetalIOSurfaceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - ioSurface::IOSurfaceRef -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -struct VkImportMetalIOSurfaceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ioSurface::IOSurfaceRef -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -struct VkExportMetalSharedEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - event::VkEvent - mtlSharedEvent::MTLSharedEvent_id -end +const VK_KHR_shared_presentable_image = 1 -struct VkImportMetalSharedEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - mtlSharedEvent::MTLSharedEvent_id -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkExportMetalObjectsEXT ) ( VkDevice device , VkExportMetalObjectsInfoEXT * pMetalObjectsInfo ) -const PFN_vkExportMetalObjectsEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkExportMetalObjectsEXT(device, pMetalObjectsInfo) - ccall((:vkExportMetalObjectsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkExportMetalObjectsInfoEXT}), device, pMetalObjectsInfo) -end +const VK_KHR_external_fence_capabilities = 1 -function vkExportMetalObjectsEXT(device, pMetalObjectsInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkExportMetalObjectsInfoEXT}), device, pMetalObjectsInfo) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -const VULKAN_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_CORE_H_ = 1 +const VK_KHR_external_fence = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_USE_64_BIT_PTR_DEFINES = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) +const VK_KHR_external_fence_fd = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_HEADER_VERSION = 240 +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_performance_query = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_FALSE = Cuint(0) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_maintenance2 = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_TRUE = Cuint(1) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_variable_pointers = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_VERSION_1_1 = 1 +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_dedicated_allocation = 1 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_VERSION_1_3 = 1 +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_relaxed_block_layout = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_image_format_list = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_bind_memory2 = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_maintenance3 = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_video_decode_queue = 1 +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_shader_clock = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VK_KHR_video_decode_h265 = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const vulkan_video_codec_h265std_decode = 1 -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_dynamic_rendering = 1 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_multiview = 1 +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_get_physical_device_properties2 = 1 +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_driver_properties = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_maintenance1 = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +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_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20715,13 +32678,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20793,7 +32756,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20899,7 +32862,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20917,16 +32880,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21169,7 +33138,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21293,7 +33262,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21363,6 +33332,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21407,10 +33388,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21471,6 +33458,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21515,7 +33514,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21545,7 +33544,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21597,9 +33596,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21621,6 +33626,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21651,7 +33662,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21671,6 +33682,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21685,7 +33702,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21701,6 +33718,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21719,9 +33756,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21737,6 +33780,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21761,6 +33816,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21779,6 +33846,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21801,7 +33874,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21811,6 +33884,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21835,12 +33920,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21853,6 +33962,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 @@ -21895,7 +34224,13 @@ const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" const VK_EXT_metal_objects = 1 -const VK_EXT_METAL_OBJECTS_SPEC_VERSION = 1 +const VK_EXT_METAL_OBJECTS_SPEC_VERSION = 2 const VK_EXT_METAL_OBJECTS_EXTENSION_NAME = "VK_EXT_metal_objects" +const VK_EXT_external_memory_metal = 1 + +const VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME = "VK_EXT_external_memory_metal" + diff --git a/lib/x86_64-linux-gnu.jl b/lib/x86_64-linux-gnu.jl index 56081ed..d2d4b92 100644 --- a/lib/x86_64-linux-gnu.jl +++ b/lib/x86_64-linux-gnu.jl @@ -151,6 +151,7 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -165,21 +166,26 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -400,6 +406,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -450,8 +506,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -459,10 +544,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -474,9 +555,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -491,7 +569,6 @@ end 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 @@ -504,6 +581,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -512,6 +590,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -547,6 +626,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -612,7 +693,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -620,15 +700,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -636,6 +710,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -651,14 +727,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -683,11 +762,7 @@ end 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 @@ -695,16 +770,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -718,11 +787,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -732,8 +802,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -746,8 +834,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -783,8 +869,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -825,6 +909,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -839,6 +925,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -851,26 +939,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -879,6 +985,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -892,19 +1022,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -913,7 +1273,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -934,6 +1293,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -947,6 +1309,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -986,6 +1349,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -1005,11 +1369,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1024,6 +1395,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1037,11 +1411,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1067,10 +1468,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1078,6 +1482,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1104,6 +1539,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1111,10 +1547,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1172,7 +1615,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1180,12 +1631,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1443,6 +1896,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1451,7 +1906,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1506,6 +1976,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1543,6 +2016,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1695,20 +2169,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1719,6 +2195,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1739,6 +2216,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1754,6 +2234,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1877,7 +2358,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1887,7 +2370,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1906,6 +2391,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1919,15 +2405,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1959,11 +2449,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2022,6 +2514,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2057,13 +2551,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2091,16 +2587,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2116,6 +2621,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,7 +2650,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2184,20 +2692,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2253,6 +2767,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2273,6 +2792,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2299,11 +2819,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2327,6 +2850,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2351,8 +2875,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2361,6 +2885,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2372,15 +2898,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2492,6 +3019,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,10 +3032,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2526,6 +3058,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2543,6 +3077,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2553,6 +3088,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3686,6 +4222,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3727,6 +4271,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3741,9 +4293,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5348,6 +5933,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5362,7 +5948,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5386,6 +5976,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5412,6 +6003,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6326,6 +6921,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6355,6 +6952,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6375,11 +6973,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7166,9 +7766,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7573,16 +8176,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8116,967 +8759,1718 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 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 +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkMemoryUnmapFlags = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR_T = Cvoid +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR_T = Cvoid +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end +const VkSurfaceKHR_T = Cvoid -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags +@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 -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} -end +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) -end +const VkSwapchainKHR_T = Cvoid -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +# 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 vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -const VkVideoDecodeUsageFlagsKHR = VkFlags +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end -const VkVideoDecodeFlagsKHR = VkFlags +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 -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, 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 vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, 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 vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end + +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end + +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 +end + +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR +end + +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +end + +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end + +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties +end + +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end + +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end + +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView +end + +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +end + +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements +end + +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end + +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end + +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end + +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end + +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end + +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, 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 vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, 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 vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, 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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, 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 vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, 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 vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeUsageFlagsKHR = VkFlags + +const VkVideoDecodeFlagsKHR = VkFlags + +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR +end + +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR +end + +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264AspectRatioIdc::UInt32 begin 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 @@ -9099,11533 +10493,22060 @@ end STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end + +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] +end + +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] +end + +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end + +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end + +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end + +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end + +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end + +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end + +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 +end + +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end + +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end + +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end + +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 +end + +struct VkVideoEncodeH264SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc +end + +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} +end + +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 +end + +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} +end + +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc +end + +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR +end + +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +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 + +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] +end + +struct StdVideoH265HrdParameters + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] +end + +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] +end + +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] +end + +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end + +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +# 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 -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +@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 -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +# 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 -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +@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 StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +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 -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +# 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 -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +# 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 -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat end -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) end -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} +# 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 -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +@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 VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end -struct VkVideoDecodeH264ProfileInfoKHR +struct VkDisplayPowerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + powerState::VkDisplayPowerStateEXT end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkDeviceEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + deviceEvent::VkDeviceEventTypeEXT end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkDisplayEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + displayEvent::VkDisplayEventTypeEXT end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkSwapchainCounterCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + surfaceCounters::VkSurfaceCounterFlagsEXT end -struct VkVideoDecodeH264PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} +# 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 -struct VkVideoDecodeH264DpbSlotInfoKHR +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +struct VkMultiviewPerViewAttributesInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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 VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkPipelineViewportSwizzleStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} end -struct VkAttachmentSampleCountInfoAMD +@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} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + maxDiscardRectangles::UInt32 end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX +struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo - -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures - -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkFormatProperties2KHR = VkFormatProperties2 +@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 VkImageFormatProperties2KHR = VkImageFormatProperties2 +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 +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 VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +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_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +const VkDebugUtilsMessengerEXT_T = Cvoid -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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 -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +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 -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# 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 vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) 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) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits +const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end -struct VkImportMemoryFdInfoKHR +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkMemoryFdPropertiesKHR +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 end -struct VkMemoryGetFdInfoKHR +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + maxSampleLocationGridSize::VkExtent2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags - -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits - -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags +@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 -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end -const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) -const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@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 VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD -struct VkImportSemaphoreFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 end -struct VkSemaphoreGetFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits + shaderSMBuiltins::VkBool32 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) +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} end -struct VkPhysicalDevicePushDescriptorPropertiesKHR +struct VkImageDrmFormatModifierExplicitCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} 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) +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +# 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 VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +const VkValidationCacheEXT_T = Cvoid -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end +const VkValidationCacheCreateFlagsEXT = VkFlags -struct VkPresentRegionsKHR +struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate - -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType - -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags - -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -# 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_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) 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 +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} end -struct VkSharedPresentSurfaceCapabilitiesKHR +struct VkPhysicalDeviceShadingRateImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -const VkExternalFencePropertiesKHR = VkExternalFenceProperties +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -const VkFenceImportFlagsKHR = VkFenceImportFlags +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits +const VkAccelerationStructureNV_T = Cvoid -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint +@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 VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +const VkGeometryTypeNV = VkGeometryTypeKHR -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + 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 end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@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 -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR -@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 +@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 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 +@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 -@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 +const VkGeometryFlagsKHR = VkFlags -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 -end +const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkAcquireProfilingLockFlagsKHR = VkFlags +const VkGeometryInstanceFlagsKHR = VkFlags -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 end -struct VkPerformanceCounterKHR +struct VkRayTracingPipelineCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 end -struct VkPerformanceCounterDescriptionKHR +struct VkGeometryTrianglesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkGeometryAABBNV sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV 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) +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR 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) +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} end -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} +struct VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} end -struct VkAcquireProfilingLockInfoKHR +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV end -struct VkPerformanceQuerySubmitInfoKHR +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::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} +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +const VkTransformMatrixNV = VkTransformMatrixKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +const VkAabbPositionsNV = VkAabbPositionsKHR -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +# 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} -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +# 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} -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +# 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} -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) 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) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +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 -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) end -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) 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) +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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) 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) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo - -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion - -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion - -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange - -const VkChromaLocationKHR = VkChromaLocation - -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo - -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +# 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 -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD end -const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties +const VkTimeDomainEXT = VkTimeDomainKHR -const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) -const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) 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} +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end -# 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 vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +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) +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 -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +@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 -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) +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures -struct VkPhysicalDeviceShaderClockFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 -end +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 end -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +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 StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 end -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -struct StdVideoH265HrdFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) - return getfield(x, f) +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +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 StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct StdVideoH265VpsFlags - data::NTuple{4, UInt8} +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag - ref[] +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -struct StdVideoH265ProfileTierLevelFlags - data::NTuple{4, UInt8} +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) - return getfield(x, f) +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag - ref[] +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 end -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +# 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) 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} +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) - return getfield(x, f) +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag - ref[] +@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 -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +@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 -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +@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 StdVideoH265SpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +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::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end ref[] end -struct StdVideoH265ShortTermRefPicSetFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 end -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +# 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 -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkVideoDecodeH265PictureInfoKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} + localDimmingSupport::VkBool32 end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} + localDimmingEnable::VkBool32 end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +# 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + fragmentDensityMapAttachment::VkAttachmentReference end -const VkDriverIdKHR = VkDriverId +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end -const VkConformanceVersionKHR = VkConformanceVersion +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkShaderCorePropertiesFlagsAMD = VkFlags -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end -const VkSemaphoreTypeKHR = VkSemaphoreType +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 +end -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +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 -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +const VkComponentTypeNV = VkComponentTypeKHR -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +const VkScopeNV = VkScopeKHR -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkFragmentShadingRateAttachmentInfoKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + cooperativeMatrixSupportedStages::VkShaderStageFlags end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +# 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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + coverageReductionMode::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPipelineCoverageReductionStateCreateInfoNV 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 + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceProvokingVertexFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +end -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkHeadlessSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + flags::VkHeadlessSurfaceCreateFlagsEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkLineRasterizationModeEXT = VkLineRasterizationMode -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +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 -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +# 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 -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} +# 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 VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +# 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 vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) 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 +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 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutableInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} +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 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} -end +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -struct VkPresentIdKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} -end +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -struct VkPhysicalDevicePresentIdFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentId::VkBool32 -end +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +const VkImageSubresource2EXT = VkImageSubresource2 -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkAccessFlags2KHR = VkAccessFlags2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -const VkSubmitFlagsKHR = VkSubmitFlags +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minPlacedMemoryMapAlignment::VkDeviceSize +end -struct VkQueueFamilyCheckpointProperties2NV +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + pPlacedAddress::Ptr{Cvoid} end -struct VkCheckpointData2NV +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkIndirectCommandsLayoutNV_T = Cvoid -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) -end +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end +const VkIndirectStateFlagsNV = VkFlags -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +@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 -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + deviceGeneratedCommands::VkBool32 end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkGraphicsShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkGraphicsPipelineShaderGroupsCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end -const VkBufferCopy2KHR = VkBufferCopy2 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end -const VkImageCopy2KHR = VkImageCopy2 +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 VkImageBlit2KHR = VkImageBlit2 +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +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 VkImageResolve2KHR = VkImageResolve2 +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = 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_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = 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_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 - -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 - -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties - -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements - -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} - -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -const VkDebugReportCallbackEXT_T = Cvoid +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 +end -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} +const VkDeviceMemoryReportFlagsEXT = VkFlags -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMemoryReport::VkBool32 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 +struct VkDeviceMemoryReportCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 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} +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} -struct VkDebugReportCallbackCreateInfoEXT +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT 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 VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -# 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} +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -struct VkDebugMarkerObjectNameInfoEXT +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + presentBarrier::VkBool32 end -struct VkDebugMarkerObjectTagInfoEXT +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + presentBarrierSupported::VkBool32 end -struct VkDebugMarkerMarkerInfoEXT +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + presentBarrierEnable::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkDedicatedAllocationImageCreateInfoNV +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + diagnosticsConfig::VkBool32 end -struct VkDedicatedAllocationBufferCreateInfoNV +struct VkDeviceDiagnosticsConfigCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + flags::VkDeviceDiagnosticsConfigFlagsNV end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags +const VkTileShadingRenderPassFlagsQCOM = VkFlags -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDeviceTileShadingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkPhysicalDeviceTileShadingPropertiesQCOM 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 + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D 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) +struct VkPerTileBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) 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) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -const VkCuModuleNVX_T = Cvoid +const VkAccelerationStructureKHR_T = Cvoid -const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} -const VkCuFunctionNVX_T = Cvoid +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize +end -const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -struct VkCuFunctionCreateInfoNVX +struct VkDescriptorAddressInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -struct VkCuLaunchInfoNVX +struct VkDescriptorBufferBindingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} + +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkImageViewHandleInfoNVX +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} imageView::VkImageView - descriptorType::VkDescriptorType +end + +struct VkSamplerCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} sampler::VkSampler end -struct VkImageViewAddressPropertiesNVX +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + opaqueCaptureDescriptorData::Ptr{Cvoid} end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -# 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_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) 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) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) 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 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +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) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) 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 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -const VkExternalMemoryHandleTypeFlagsNV = VkFlags +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -@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 +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -const VkExternalMemoryFeatureFlagsNV = VkFlags +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) 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 vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + graphicsPipelineLibrary::VkBool32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT +struct VkGraphicsPipelineLibraryCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 + flags::VkGraphicsPipelineLibraryFlagsEXT end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT + shaderEarlyAndLateFragmentTests::VkBool32 end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} 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) +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} 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 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -struct VkDisplayEventInfoEXT +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) 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) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 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 +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcr2plane444Formats::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + transform::VkSurfaceTransformFlagBitsKHR end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end +const VkImageCompressionFlagsEXT = VkFlags -@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 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + imageCompressionControl::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkImageCompressionControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +struct VkImageCompressionPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + attachmentFeedbackLoopLayout::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkHdrMetadataEXT +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceFaultFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize +end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -const VkDebugUtilsMessengerEXT_T = Cvoid +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} +end -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 +end -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} -@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 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +end + +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + mutableDescriptorType::VkBool32 end -struct VkDebugUtilsMessengerCallbackDataEXT +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} +end + +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT + +struct VkMutableDescriptorTypeCreateInfoEXT 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} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkVertexInputBindingDescription2EXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 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} +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +struct VkPhysicalDeviceDrmPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +const VkDeviceAddressBindingFlagsEXT = VkFlags -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + reportAddressBinding::VkBool32 end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +struct VkSubpassShadingPipelineCreateInfoHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassShading::VkBool32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end +const VkRemoteAddressNV = Ptr{Cvoid} -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkMemoryGetRemoteAddressInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryRDMA::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +end -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +const VkPipelineInfoEXT = VkPipelineInfoKHR -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkSampleLocationsInfoEXT +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} -end - -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + frameBoundary::VkBool32 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkFrameBoundaryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + multisampledRenderToSingleSampled::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + optimal::VkBool32 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -struct VkMultisamplePropertiesEXT +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} + +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) 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 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +end -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) 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 +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + colorWriteEnable::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPipelineColorWriteCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesListEXT +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + minLod::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + minLod::Cfloat end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkPhysicalDeviceMultiDrawFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + multiDraw::VkBool32 end -struct VkImageDrmFormatModifierPropertiesEXT +struct VkPhysicalDeviceMultiDrawPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 + maxMultiDrawCount::UInt32 end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} + +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -const VkValidationCacheEXT_T = Cvoid +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImageFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT_T = Cvoid -# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT = Ptr{VkMicromapEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -@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 +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) 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 +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} + pVersionData::Ptr{UInt8} 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) +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} end -const VkAccelerationStructureNV_T = Cvoid - -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkGeometryTypeKHR::UInt32 begin - 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 +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -const VkGeometryTypeNV = VkGeometryTypeKHR +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -@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 +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -const VkGeometryFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagsNV = VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} + +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -const VkAabbPositionsNV = VkAabbPositionsKHR +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterShadingRate::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkSamplerBorderColorComponentMappingCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + components::VkComponentMapping + srgb::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pageableDeviceLocalMemory::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) 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) +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 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) +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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) +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 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) +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 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) +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) 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 +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkRenderPassStripeInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + stripeArea::VkRect2D end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkRenderPassStripeBeginInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT +struct VkRenderPassStripeSubmitInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageViewType::VkImageViewType + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -struct VkFilterCubicImageViewImageFormatPropertiesEXT +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 + fragmentDensityMapOffset::VkBool32 end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -struct VkImportMemoryHostPointerInfoEXT +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} end -struct VkMemoryHostPointerPropertiesEXT +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT + +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize +end + +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + indirectCopy::VkBool32 end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + supportedQueues::VkQueueFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = 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_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV 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 +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 end -struct VkCalibratedTimestampInfoEXT +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) 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) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV 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 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV 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 + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + imageCompressionControlSwapchain::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::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) +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + maxCommandBufferNestingLevel::UInt32 end -struct VkCheckpointDataNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + acquireUnmodifiedMemory::VkBool32 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) +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) 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) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +end -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) end -const VkShaderCorePropertiesFlagsAMD = VkFlags +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +end -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +end -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +end -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +end -@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 +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 end -struct VkValidationFeaturesEXT +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + disallowMerging::VkBool32 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 +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 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 +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -struct VkCooperativeMatrixPropertiesNV +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end + +struct VkRenderPassSubpassFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +end + +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} +const VkTensorARM_T = Cvoid -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorARM = Ptr{VkTensorARM_T} -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorViewARM_T = Cvoid -@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 +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +const VkTensorCreateFlagsARM = VkFlags64 -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 + +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkFramebufferMixedSamplesCombinationNV +struct VkTensorViewCreateInfoARM 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 - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 + tensor::VkTensorARM end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +struct VkWriteDescriptorSetTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT +struct VkTensorMemoryBarrierARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT +struct VkTensorDependencyInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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) +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} 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 +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT +struct VkCopyTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 + tensor::VkTensorARM end -struct VkPipelineRasterizationLineStateCreateInfoEXT +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits 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) +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM 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 + descriptorBufferTensorDescriptors::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} +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkTensorCaptureDescriptorDataInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + tensorView::VkTensorViewARM end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = 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_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = 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_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = 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 VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = 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 vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 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) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -const VkPresentScalingFlagsEXT = VkFlags +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) end -const VkPresentGravityFlagsEXT = VkFlags +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -struct VkSurfacePresentModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR +const VkOpticalFlowSessionNV_T = Cvoid + +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} + +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentScalingCapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentModeCompatibilityEXT +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + opticalFlow::VkBool32 end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkPhysicalDeviceOpticalFlowPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -struct VkSwapchainPresentFenceInfoEXT +struct VkOpticalFlowImageFormatInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + usage::VkOpticalFlowUsageFlagsNV end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + format::VkFormat end -struct VkSwapchainPresentModeInfoEXT +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkOpticalFlowSessionCreatePrivateDataInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -struct VkReleaseSwapchainImagesInfoEXT +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV_T = Cvoid +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyDithering::VkBool32 end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 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} +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + antiLag::VkBool32 end -struct VkGeneratedCommandsInfoNV +struct VkAntiLagPresentationInfoAMD 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 + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkAntiLagDataAMD 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 vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, 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 vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +const VkShaderEXT_T = Cvoid + +const VkShaderEXT = Ptr{VkShaderEXT_T} + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 + shaderObject::VkBool32 end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -struct VkRenderPassTransformBeginInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkDeviceMemoryReportFlagsEXT = VkFlags +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -struct VkDeviceMemoryReportCallbackDataEXT +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + tileProperties::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + amigoProfiling::VkBool32 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkAmigoProfilingSubmitInfoSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + multiviewPerViewViewports::VkBool32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + rayTracingInvocationReorder::VkBool32 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkPhysicalDeviceCooperativeVectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -const VkPrivateDataSlotEXT = VkPrivateDataSlot - -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags - -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures - -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo - -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) +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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + extendedSparseAddressSpace::VkBool32 end -const VkAccelerationStructureKHR_T = Cvoid - -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + legacyVertexAttributes::VkBool32 end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + nativeUnalignedPerformance::VkBool32 end -struct VkDescriptorAddressInfoEXT +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end + +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDescriptorBufferBindingInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + shaderCoreBuiltins::VkBool32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkDescriptorGetInfoEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + presentID::UInt64 end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + queueType::VkOutOfBandQueueTypeNV end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkDataGraphPipelineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkDataGraphPipelinePropertyQueryResultARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + flags::VkDataGraphPipelineDispatchFlagsARM end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM +end + +struct VkDataGraphProcessingEngineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureMotionInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + multiviewPerViewRenderAreas::VkBool32 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 +end + +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkBlitImageCubicWeightsInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + cubicRangeClamp::VkBool32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + tileMemoryHeap::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -struct VkImageSubresource2EXT +struct VkTileMemoryRequirementsQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + size::VkDeviceSize + alignment::VkDeviceSize end -struct VkImageCompressionPropertiesEXT +struct VkTileMemoryBindInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + memory::VkDeviceMemory end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} + +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + hdmi3DSupported::VkBool32 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRawAccessChainsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRawAccessChains::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 -end +const VkExternalComputeQueueNV_T = Cvoid -struct VkPhysicalDeviceFaultFeaturesEXT +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + reservedExternalQueues::UInt32 end -struct VkDeviceFaultCountsEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize -end - -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize + preferredQueue::VkQueue end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkExternalComputeQueueDataParamsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndex::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 -end - -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} + shaderFloat16VectorAtomics::VkBool32 end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT - -struct VkMutableDescriptorTypeCreateInfoEXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + shaderReplicatedComposites::VkBool32 end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + rayTracingValidation::VkBool32 end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkDeviceAddressBindingFlagsEXT = VkFlags +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} - -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} - -struct VkMemoryGetRemoteAddressInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPipelineInfoEXT = VkPipelineInfoKHR +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkSubpassResolvePerformanceQueryEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - optimal::VkBool32 +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkMultisampledRenderToSingleSampledInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPipelineColorWriteCreateInfoEXT +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} + allowClusterAccelerationStructure::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkImageViewMinLodCreateInfoEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 -end - -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 -end - -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 + enablePartitionTranslation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 -end - -const VkMicromapEXT_T = Cvoid - -const VkMicromapEXT = Ptr{VkMicromapEXT_T} - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkPartitionedAccelerationStructureInstancesInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkBuildPartitionedAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkBuildMicromapFlagsEXT = VkFlags - -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkMicromapCreateFlagsEXT = VkFlags - -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 -end +const VkIndirectExecutionSetEXT_T = Cvoid -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} -end +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) -end +const VkIndirectCommandsLayoutEXT_T = Cvoid -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 -end +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags -struct VkMicromapVersionInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkCopyMicromapToMemoryInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -struct VkCopyMemoryToMicromapInfoEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkCopyMicromapInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkMicromapBuildSizesInfoEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT -end - -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectCommandsLayoutCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkGeneratedCommandsPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + index::UInt32 + shader::VkShaderEXT end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkDescriptorSetBindingReferenceVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA sType::VkStructureType pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 + imageAlignmentControl::VkBool32 end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA sType::VkStructureType pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 + supportedImageAlignmentMask::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM +struct VkImageAlignmentControlCreateInfoMESA sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 + maximumRequestedAlignment::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM +struct VkPhysicalDeviceDepthClampControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D + depthClampControl::VkBool32 end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM +struct VkPipelineViewportDepthClampControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} -end - -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize -end - -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - indirectCopy::VkBool32 + hdrVivid::VkBool32 end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV +struct VkHdrVividDynamicMetadataHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 - -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 - -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineOpacityMicromap::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeRobustness::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + fragmentDensityMapLayered::VkBool32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + maxFragmentDensityMapLayers::UInt32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + presentMetering::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end + +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] +end + +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] +end + +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = 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_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = 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_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkRenderPassCreationControlEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - disallowMerging::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_display = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV_T = Cvoid - -const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 1 +const VK_KHR_external_fence_fd = 1 -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20695,13 +32616,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20773,7 +32694,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20879,7 +32800,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20897,16 +32818,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21149,7 +33076,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21273,7 +33200,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21343,6 +33270,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21387,10 +33326,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21451,6 +33396,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21495,7 +33452,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21525,7 +33482,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21577,9 +33534,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21601,6 +33564,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21631,7 +33600,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21651,6 +33620,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21665,7 +33640,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21681,6 +33656,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21699,9 +33694,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21717,6 +33718,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21741,6 +33754,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21759,6 +33784,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21781,7 +33812,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21791,6 +33822,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21815,12 +33858,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21833,6 +33900,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/x86_64-linux-musl.jl b/lib/x86_64-linux-musl.jl index 56081ed..d2d4b92 100644 --- a/lib/x86_64-linux-musl.jl +++ b/lib/x86_64-linux-musl.jl @@ -151,6 +151,7 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -165,21 +166,26 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -400,6 +406,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -450,8 +506,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -459,10 +544,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -474,9 +555,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -491,7 +569,6 @@ end 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 @@ -504,6 +581,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -512,6 +590,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -547,6 +626,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -612,7 +693,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -620,15 +700,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -636,6 +710,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -651,14 +727,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -683,11 +762,7 @@ end 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 @@ -695,16 +770,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -718,11 +787,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -732,8 +802,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -746,8 +834,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -783,8 +869,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -825,6 +909,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -839,6 +925,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -851,26 +939,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -879,6 +985,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -892,19 +1022,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -913,7 +1273,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -934,6 +1293,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -947,6 +1309,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -986,6 +1349,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -1005,11 +1369,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1024,6 +1395,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1037,11 +1411,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1067,10 +1468,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1078,6 +1482,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1104,6 +1539,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1111,10 +1547,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1172,7 +1615,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1180,12 +1631,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1443,6 +1896,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1451,7 +1906,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1506,6 +1976,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1543,6 +2016,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1695,20 +2169,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1719,6 +2195,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1739,6 +2216,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1754,6 +2234,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1877,7 +2358,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1887,7 +2370,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1906,6 +2391,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1919,15 +2405,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1959,11 +2449,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2022,6 +2514,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2057,13 +2551,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2091,16 +2587,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2116,6 +2621,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2144,7 +2650,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2184,20 +2692,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2253,6 +2767,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2273,6 +2792,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2299,11 +2819,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2327,6 +2850,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2351,8 +2875,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2361,6 +2885,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2372,15 +2898,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2492,6 +3019,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2503,10 +3032,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2526,6 +3058,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2543,6 +3077,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2553,6 +3088,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -3686,6 +4222,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3727,6 +4271,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3741,9 +4293,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -5348,6 +5933,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5362,7 +5948,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5386,6 +5976,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5412,6 +6003,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6326,6 +6921,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6355,6 +6952,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6375,11 +6973,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7166,9 +7766,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7573,16 +8176,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -8116,967 +8759,1718 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 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 +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end +const VkMemoryUnmapFlags = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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) +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 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) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) 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) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) 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 vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +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) +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) end -const VkVideoSessionKHR_T = Cvoid +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR_T = Cvoid +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end +const VkSurfaceKHR_T = Cvoid -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties +@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 -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags +@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 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags +@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 -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} -end +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) -end +const VkSwapchainKHR_T = Cvoid -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) -end +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +@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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +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 -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +# 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 vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -const VkVideoDecodeUsageFlagsKHR = VkFlags +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end -const VkVideoDecodeFlagsKHR = VkFlags +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 -struct VkVideoDecodeCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -struct VkVideoDecodeUsageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, 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 vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, 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 vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end + +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end + +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 +end + +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR +end + +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +end + +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end + +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties +end + +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end + +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end + +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView +end + +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +end + +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements +end + +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end + +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end + +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end + +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end + +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end + +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, 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 vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, 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 vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, 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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, 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 vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, 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 vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeUsageFlagsKHR = VkFlags + +const VkVideoDecodeFlagsKHR = VkFlags + +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR +end + +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR +end + +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264AspectRatioIdc::UInt32 begin 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 @@ -9099,11533 +10493,22060 @@ end STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 end -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end + +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] +end + +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] +end + +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end + +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end + +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end + +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end + +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end + +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end + +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 +end + +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end + +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end + +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end + +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 +end + +struct VkVideoEncodeH264SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc +end + +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} +end + +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 +end + +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} +end + +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc +end + +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR +end + +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +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 + +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] +end + +struct StdVideoH265HrdParameters + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] +end + +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] +end + +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] +end + +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end + +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +# 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 -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +@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 -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +# 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 -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 end -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] +@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 StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +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 -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV end -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} +# 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 -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 end -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] +# 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 -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) end -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat end -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) end -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} +# 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 -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +@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 VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end -struct VkVideoDecodeH264ProfileInfoKHR +struct VkDisplayPowerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR + powerState::VkDisplayPowerStateEXT end -struct VkVideoDecodeH264CapabilitiesKHR +struct VkDeviceEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D + deviceEvent::VkDeviceEventTypeEXT end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkDisplayEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + displayEvent::VkDisplayEventTypeEXT end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR +struct VkSwapchainCounterCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} + surfaceCounters::VkSurfaceCounterFlagsEXT end -struct VkVideoDecodeH264PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} +# 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 -struct VkVideoDecodeH264DpbSlotInfoKHR +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} end -const VkRenderingFlagsKHR = VkRenderingFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} -const VkRenderingInfoKHR = VkRenderingInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +struct VkMultiviewPerViewAttributesInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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 VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkPipelineViewportSwizzleStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} end -struct VkAttachmentSampleCountInfoAMD +@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} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + maxDiscardRectangles::UInt32 end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX +struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo - -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures - -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end -const VkFormatProperties2KHR = VkFormatProperties2 +@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 VkImageFormatProperties2KHR = VkImageFormatProperties2 +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 +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 VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +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_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} +const VkDebugUtilsMessengerEXT_T = Cvoid -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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 -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +@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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +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 -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -# 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 vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) 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) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) end -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits +const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} end -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end -struct VkImportMemoryFdInfoKHR +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkMemoryFdPropertiesKHR +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 end -struct VkMemoryGetFdInfoKHR +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + maxSampleLocationGridSize::VkExtent2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags - -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits - -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags +@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 -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end -const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) -const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@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 VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD -struct VkImportSemaphoreFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 end -struct VkSemaphoreGetFdInfoKHR +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits + shaderSMBuiltins::VkBool32 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) +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} end -struct VkPhysicalDevicePushDescriptorPropertiesKHR +struct VkImageDrmFormatModifierExplicitCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} 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) +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +# 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 VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +const VkValidationCacheEXT_T = Cvoid -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end +const VkValidationCacheCreateFlagsEXT = VkFlags -struct VkPresentRegionsKHR +struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate - -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType - -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags - -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -# 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_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) 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 +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +@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 -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} end -struct VkSharedPresentSurfaceCapabilitiesKHR +struct VkPhysicalDeviceShadingRateImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -const VkExternalFencePropertiesKHR = VkExternalFenceProperties +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -const VkFenceImportFlagsKHR = VkFenceImportFlags +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits +const VkAccelerationStructureNV_T = Cvoid -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint +@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 VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +const VkGeometryTypeNV = VkGeometryTypeKHR -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + 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 end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@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 -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR -@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 +@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 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 +@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 -@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 +const VkGeometryFlagsKHR = VkFlags -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 -end +const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -const VkAcquireProfilingLockFlagsKHR = VkFlags +const VkGeometryInstanceFlagsKHR = VkFlags -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 end -struct VkPerformanceCounterKHR +struct VkRayTracingPipelineCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 end -struct VkPerformanceCounterDescriptionKHR +struct VkGeometryTrianglesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize end -struct VkQueryPoolPerformanceCreateInfoKHR +struct VkGeometryAABBNV sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV 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) +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR 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) +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} end -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} +struct VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end - ref[] +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} end -struct VkAcquireProfilingLockInfoKHR +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV end -struct VkPerformanceQuerySubmitInfoKHR +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::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} +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} +const VkTransformMatrixNV = VkTransformMatrixKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} +const VkAabbPositionsNV = VkAabbPositionsKHR -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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} -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin +# 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} -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties +# 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} -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +# 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} -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) 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) +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) end -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR +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 -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) end -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) end -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) 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) +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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) 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) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo - -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion - -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion - -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange - -const VkChromaLocationKHR = VkChromaLocation - -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo - -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 end -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize end -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +# 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 -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 end -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD end -const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties +const VkTimeDomainEXT = VkTimeDomainKHR -const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) -const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) end -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) 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} +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end -# 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 vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +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) +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 -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +@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 -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) +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 end -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures -struct VkPhysicalDeviceShaderClockFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 -end +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 end -@cenum StdVideoH265AspectRatioIdc::UInt32 begin - STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 - STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 - STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 - STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 - STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 - STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 - STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 - STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 - STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 - STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 - STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 - STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 - STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 - STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 - STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 - STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 - STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 - STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 - STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 - STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +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 StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 end -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -struct StdVideoH265HrdFlags - data::NTuple{4, UInt8} +# 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 Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) - f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) - f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) - return getfield(x, f) +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) - r = Ref{StdVideoH265HrdFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) - ref = Ref{StdVideoH265HrdFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag - ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag - ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag - ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag - ptr.low_delay_hrd_flag = low_delay_hrd_flag - ref[] +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 StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct StdVideoH265VpsFlags - data::NTuple{4, UInt8} +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) - f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) - r = Ref{StdVideoH265VpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function 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) - ref = Ref{StdVideoH265VpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) - ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag - ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag - ptr.vps_timing_info_present_flag = vps_timing_info_present_flag - ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag - ref[] +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -struct StdVideoH265ProfileTierLevelFlags - data::NTuple{4, UInt8} +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) - f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) - return getfield(x, f) +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) - r = Ref{StdVideoH265ProfileTierLevelFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) - ref = Ref{StdVideoH265ProfileTierLevelFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) - ptr.general_tier_flag = general_tier_flag - ptr.general_progressive_source_flag = general_progressive_source_flag - ptr.general_interlaced_source_flag = general_interlaced_source_flag - ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag - ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag - ref[] +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 end -struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} end -struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} +# 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) 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} +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -struct StdVideoH265SpsVuiFlags - data::NTuple{4, UInt8} +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) - return getfield(x, f) +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 end -function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH265SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 end -function 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) - ref = Ref{StdVideoH265SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.colour_description_present_flag = colour_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag - ptr.field_seq_flag = field_seq_flag - ptr.frame_field_info_present_flag = frame_field_info_present_flag - ptr.default_display_window_flag = default_display_window_flag - ptr.vui_timing_info_present_flag = vui_timing_info_present_flag - ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag - ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag - ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag - ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag - ref[] +@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 -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +@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 -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +@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 StdVideoH265SpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) +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::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, r) +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end ref[] end -struct StdVideoH265ShortTermRefPicSetFlags - data::NTuple{4, UInt8} +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) return getfield(x, f) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, r) +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data ref[] end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 end -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +# 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 -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkVideoDecodeH265PictureInfoKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} + localDimmingSupport::VkBool32 end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} + localDimmingEnable::VkBool32 end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 +# 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + fragmentDensityMapAttachment::VkAttachmentReference end -const VkDriverIdKHR = VkDriverId +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end -const VkConformanceVersionKHR = VkConformanceVersion +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -const VkResolveModeFlagsKHR = VkResolveModeFlags +const VkShaderCorePropertiesFlagsAMD = VkFlags -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end -const VkSemaphoreTypeKHR = VkSemaphoreType +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 +end -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +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 -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +const VkComponentTypeNV = VkComponentTypeKHR -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +const VkScopeNV = VkScopeKHR -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkFragmentShadingRateAttachmentInfoKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + cooperativeMatrixSupportedStages::VkShaderStageFlags end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +# 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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + coverageReductionMode::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkPipelineCoverageReductionStateCreateInfoNV 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 + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceProvokingVertexFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +end -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkHeadlessSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + flags::VkHeadlessSurfaceCreateFlagsEXT end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures +const VkLineRasterizationModeEXT = VkLineRasterizationMode -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +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 -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +# 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 -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} +# 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 VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +# 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 vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) 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 +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 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -struct VkPipelineExecutableInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) 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) +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) end -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} +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 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} -end +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -struct VkPresentIdKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} -end +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -struct VkPhysicalDevicePresentIdFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentId::VkBool32 -end +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +const VkImageSubresource2EXT = VkImageSubresource2 -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -const VkAccessFlags2KHR = VkAccessFlags2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -const VkSubmitFlagsKHR = VkSubmitFlags +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 +end -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minPlacedMemoryMapAlignment::VkDeviceSize +end -struct VkQueueFamilyCheckpointProperties2NV +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 + pPlacedAddress::Ptr{Cvoid} end -struct VkCheckpointData2NV +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) -end +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) -end +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end +const VkIndirectCommandsLayoutNV_T = Cvoid -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) -end +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +@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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end +const VkIndirectStateFlagsNV = VkFlags -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +@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 -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 + deviceGeneratedCommands::VkBool32 end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR +struct VkGraphicsShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkGraphicsPipelineShaderGroupsCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 - -const VkCopyImageInfo2KHR = VkCopyImageInfo2 - -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end -const VkBufferCopy2KHR = VkBufferCopy2 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end -const VkImageCopy2KHR = VkImageCopy2 +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 VkImageBlit2KHR = VkImageBlit2 +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +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 VkImageResolve2KHR = VkImageResolve2 +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = 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_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = 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_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 - -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 - -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkCommandBufferInheritanceViewportScissorInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR end -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features - -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties - -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements - -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} - -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -const VkDebugReportCallbackEXT_T = Cvoid +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 +end -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} +const VkDeviceMemoryReportFlagsEXT = VkFlags -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMemoryReport::VkBool32 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 +struct VkDeviceMemoryReportCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 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} +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} -struct VkDebugReportCallbackCreateInfoEXT +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT 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 VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -# 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} +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -struct VkDebugMarkerObjectNameInfoEXT +struct VkPhysicalDevicePresentBarrierFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + presentBarrier::VkBool32 end -struct VkDebugMarkerObjectTagInfoEXT +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + presentBarrierSupported::VkBool32 end -struct VkDebugMarkerMarkerInfoEXT +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + presentBarrierEnable::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkDedicatedAllocationImageCreateInfoNV +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + diagnosticsConfig::VkBool32 end -struct VkDedicatedAllocationBufferCreateInfoNV +struct VkDeviceDiagnosticsConfigCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 + flags::VkDeviceDiagnosticsConfigFlagsNV end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags +const VkTileShadingRenderPassFlagsQCOM = VkFlags -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDeviceTileShadingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkPhysicalDeviceTileShadingPropertiesQCOM 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 + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkRenderPassTileShadingCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D 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) +struct VkPerTileBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) 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) +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} end -const VkCuModuleNVX_T = Cvoid +const VkAccelerationStructureKHR_T = Cvoid -const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} -const VkCuFunctionNVX_T = Cvoid +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize +end -const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t +end -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 end -struct VkCuFunctionCreateInfoNVX +struct VkDescriptorAddressInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -struct VkCuLaunchInfoNVX +struct VkDescriptorBufferBindingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} + +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkImageViewHandleInfoNVX +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} imageView::VkImageView - descriptorType::VkDescriptorType +end + +struct VkSamplerCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} sampler::VkSampler end -struct VkImageViewAddressPropertiesNVX +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + opaqueCaptureDescriptorData::Ptr{Cvoid} end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} -# 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_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) 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) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) 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 +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) 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 vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +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) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) 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 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -const VkExternalMemoryHandleTypeFlagsNV = VkFlags +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -@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 +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -const VkExternalMemoryFeatureFlagsNV = VkFlags +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) 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 vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +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) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags -struct VkImageViewASTCDecodeModeEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat + graphicsPipelineLibrary::VkBool32 end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT +struct VkGraphicsPipelineLibraryCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 + flags::VkGraphicsPipelineLibraryFlagsEXT end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT + shaderEarlyAndLateFragmentTests::VkBool32 end -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 end -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV 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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} 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) +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} 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 +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -struct VkDisplayEventInfoEXT +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV end -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) 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) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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 +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 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 +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcr2plane444Formats::VkBool32 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkCopyCommandTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + transform::VkSurfaceTransformFlagBitsKHR end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end +const VkImageCompressionFlagsEXT = VkFlags -@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 +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +const VkImageCompressionFixedRateFlagsEXT = VkFlags -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + imageCompressionControl::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkImageCompressionControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +struct VkImageCompressionPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT +end -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + attachmentFeedbackLoopLayout::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkHdrMetadataEXT +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceFaultFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize +end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize end -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -const VkDebugUtilsMessengerEXT_T = Cvoid +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} +end -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 +end -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} -@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 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +end + +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT -struct VkDebugUtilsLabelEXT +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkDebugUtilsObjectNameInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} + mutableDescriptorType::VkBool32 end -struct VkDebugUtilsMessengerCallbackDataEXT +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} +end + +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT + +struct VkMutableDescriptorTypeCreateInfoEXT 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} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -struct VkDebugUtilsMessengerCreateInfoEXT +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 end -struct VkDebugUtilsObjectTagInfoEXT +struct VkVertexInputBindingDescription2EXT sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 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} +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +struct VkPhysicalDeviceDrmPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +const VkDeviceAddressBindingFlagsEXT = VkFlags -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + reportAddressBinding::VkBool32 end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +struct VkSubpassShadingPipelineCreateInfoHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassShading::VkBool32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end +const VkRemoteAddressNV = Ptr{Cvoid} -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkMemoryGetRemoteAddressInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryRDMA::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -const VkSamplerReductionModeEXT = VkSamplerReductionMode +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +end -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo +const VkPipelineInfoEXT = VkPipelineInfoKHR -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} +end -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkSampleLocationsInfoEXT +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} -end - -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + frameBoundary::VkBool32 end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkFrameBoundaryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + multisampledRenderToSingleSampled::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +struct VkSubpassResolvePerformanceQueryEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + optimal::VkBool32 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkMultisampledRenderToSingleSampledInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -struct VkMultisamplePropertiesEXT +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} + +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) 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 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +end -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) 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 +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + colorWriteEnable::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPipelineColorWriteCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) end -struct VkDrmFormatModifierPropertiesListEXT +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + minLod::VkBool32 end -struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} + minLod::Cfloat end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkPhysicalDeviceMultiDrawFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} + multiDraw::VkBool32 end -struct VkImageDrmFormatModifierPropertiesEXT +struct VkPhysicalDeviceMultiDrawPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 + maxMultiDrawCount::UInt32 end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 end -struct VkDrmFormatModifierPropertiesList2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} + +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -const VkValidationCacheEXT_T = Cvoid +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImageFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT_T = Cvoid -# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} +const VkMicromapEXT = Ptr{VkMicromapEXT_T} -# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -@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 +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) 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 +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkMicromapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV +struct VkMicromapVersionInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} + pVersionData::Ptr{UInt8} 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) +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} end -const VkAccelerationStructureNV_T = Cvoid - -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkGeometryTypeKHR::UInt32 begin - 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 +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -const VkGeometryTypeNV = VkGeometryTypeKHR +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) + return getfield(x, f) +end -@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 +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] end -@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 +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -const VkGeometryFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagsNV = VkGeometryFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} + +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -const VkTransformMatrixNV = VkTransformMatrixKHR +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -const VkAabbPositionsNV = VkAabbPositionsKHR +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) - return getfield(x, f) +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 +end -# 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} +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterShadingRate::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +struct VkSamplerBorderColorComponentMappingCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + components::VkComponentMapping + srgb::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pageableDeviceLocalMemory::VkBool32 end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) 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) +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 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) +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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) +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 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) +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 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) +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) 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 +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkRenderPassStripeInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 + stripeArea::VkRect2D end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkRenderPassStripeBeginInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT +struct VkRenderPassStripeSubmitInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - imageViewType::VkImageViewType + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} end -struct VkFilterCubicImageViewImageFormatPropertiesEXT +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 + fragmentDensityMapOffset::VkBool32 end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -struct VkImportMemoryHostPointerInfoEXT +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} end -struct VkMemoryHostPointerPropertiesEXT +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT + +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize +end + +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + indirectCopy::VkBool32 end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize + supportedQueues::VkQueueFlags end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = 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_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV 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 +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 end -struct VkCalibratedTimestampInfoEXT +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) 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) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV 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 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV 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 + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# 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 Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + imageCompressionControlSwapchain::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::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) +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + maxCommandBufferNestingLevel::UInt32 end -struct VkCheckpointDataNV +struct VkExternalMemoryAcquireUnmodifiedEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + acquireUnmodifiedMemory::VkBool32 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) +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicPrimitiveTopologyUnrestricted::VkBool32 end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} -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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) 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) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +end -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) end -const VkShaderCorePropertiesFlagsAMD = VkFlags +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) end -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +end -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +end -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +end -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +end -@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 +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 end -struct VkValidationFeaturesEXT +struct VkRenderPassCreationControlEXT sType::VkStructureType pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} + disallowMerging::VkBool32 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 +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 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 +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -struct VkCooperativeMatrixPropertiesNV +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end + +struct VkRenderPassSubpassFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +end + +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkDirectDriverLoadingListLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} +const VkTensorARM_T = Cvoid -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorARM = Ptr{VkTensorARM_T} -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end +const VkTensorViewARM_T = Cvoid -@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 +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +const VkTensorCreateFlagsARM = VkFlags64 -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 + +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkFramebufferMixedSamplesCombinationNV +struct VkTensorViewCreateInfoARM 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 - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 + tensor::VkTensorARM end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +struct VkWriteDescriptorSetTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT +struct VkTensorMemoryBarrierARM sType::VkStructureType pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT +struct VkTensorDependencyInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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) +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} 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 +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT +struct VkCopyTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 + tensor::VkTensorARM end -struct VkPipelineRasterizationLineStateCreateInfoEXT +struct VkPhysicalDeviceExternalTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits 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) +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM 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 + descriptorBufferTensorDescriptors::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} +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +struct VkTensorCaptureDescriptorDataInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkTensorViewCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 + tensorView::VkTensorViewARM end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = 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_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = 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_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = 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 VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = 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 vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) 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) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 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) +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -const VkPresentScalingFlagsEXT = VkFlags +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) end -const VkPresentGravityFlagsEXT = VkFlags +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -struct VkSurfacePresentModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR +const VkOpticalFlowSessionNV_T = Cvoid + +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} + +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentScalingCapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkSurfacePresentModeCompatibilityEXT +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + opticalFlow::VkBool32 end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkPhysicalDeviceOpticalFlowPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -struct VkSwapchainPresentFenceInfoEXT +struct VkOpticalFlowImageFormatInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + usage::VkOpticalFlowUsageFlagsNV end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + format::VkFormat end -struct VkSwapchainPresentModeInfoEXT +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkOpticalFlowSessionCreatePrivateDataInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -struct VkReleaseSwapchainImagesInfoEXT +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV_T = Cvoid +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -@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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) 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 +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyDithering::VkBool32 end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 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} +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + antiLag::VkBool32 end -struct VkGeneratedCommandsInfoNV +struct VkAntiLagPresentationInfoAMD 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 + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkAntiLagDataAMD 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 vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, 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 vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +const VkShaderEXT_T = Cvoid + +const VkShaderEXT = Ptr{VkShaderEXT_T} + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 + shaderObject::VkBool32 end -struct VkCommandBufferInheritanceViewportScissorInfoNV +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -struct VkRenderPassTransformBeginInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -const VkDeviceMemoryReportFlagsEXT = VkFlags +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -struct VkDeviceMemoryReportCallbackDataEXT +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 + tileProperties::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) end -struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 + amigoProfiling::VkBool32 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkAmigoProfilingSubmitInfoSEC sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + multiviewPerViewViewports::VkBool32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + rayTracingInvocationReorder::VkBool32 end -struct VkPhysicalDevicePresentBarrierFeaturesNV +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkPhysicalDeviceCooperativeVectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkCooperativeVectorPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -const VkPrivateDataSlotEXT = VkPrivateDataSlot - -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags - -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures - -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo - -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) +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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + extendedSparseAddressSpace::VkBool32 end -const VkAccelerationStructureKHR_T = Cvoid - -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t + legacyVertexAttributes::VkBool32 end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 + nativeUnalignedPerformance::VkBool32 end -struct VkDescriptorAddressInfoEXT +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end + +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkDescriptorBufferBindingInfoEXT +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + shaderCoreBuiltins::VkBool32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} - -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 end -struct VkDescriptorGetInfoEXT +struct VkLatencySleepInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT + signalSemaphore::VkSemaphore + value::UInt64 end -struct VkBufferCaptureDescriptorDataInfoEXT +struct VkSetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + presentID::UInt64 + marker::VkLatencyMarkerNV end -struct VkImageCaptureDescriptorDataInfoEXT +struct VkLatencyTimingsFrameReportNV sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -struct VkImageViewCaptureDescriptorDataInfoEXT +struct VkGetLatencyMarkerInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -struct VkSamplerCaptureDescriptorDataInfoEXT +struct VkLatencySubmissionPresentIdNV sType::VkStructureType pNext::Ptr{Cvoid} - sampler::VkSampler + presentID::UInt64 end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkSwapchainLatencyCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + queueType::VkOutOfBandQueueTypeNV end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} end -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkDataGraphPipelineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkDataGraphPipelinePropertyQueryResultARM sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkDataGraphPipelineIdentifierCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkDataGraphPipelineDispatchInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + flags::VkDataGraphPipelineDispatchFlagsARM end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM +end + +struct VkDataGraphProcessingEngineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -struct VkAccelerationStructureMotionInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + multiviewPerViewRenderAreas::VkBool32 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 +end + +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkBlitImageCubicWeightsInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + cubicWeights::VkCubicFilterWeightsQCOM end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + cubicRangeClamp::VkBool32 end -struct VkCopyCommandTransformInfoQCOM +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkImageCompressionFlagsEXT = VkFlags +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkImageCompressionControlEXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + tileMemoryHeap::VkBool32 end -struct VkSubresourceLayout2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -struct VkImageSubresource2EXT +struct VkTileMemoryRequirementsQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource + size::VkDeviceSize + alignment::VkDeviceSize end -struct VkImageCompressionPropertiesEXT +struct VkTileMemoryBindInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT + memory::VkDeviceMemory end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} + +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + hdmi3DSupported::VkBool32 end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRawAccessChainsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRawAccessChains::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 -end +const VkExternalComputeQueueNV_T = Cvoid -struct VkPhysicalDeviceFaultFeaturesEXT +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + reservedExternalQueues::UInt32 end -struct VkDeviceFaultCountsEXT +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize -end - -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize + preferredQueue::VkQueue end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +struct VkExternalComputeQueueDataParamsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndex::UInt32 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + commandBufferInheritance::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 -end - -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} + shaderFloat16VectorAtomics::VkBool32 end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT - -struct VkMutableDescriptorTypeCreateInfoEXT +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + shaderReplicatedComposites::VkBool32 end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceRayTracingValidationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + rayTracingValidation::VkBool32 end -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceDrmPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkDeviceAddressBindingFlagsEXT = VkFlags +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +struct VkClusterAccelerationStructureMoveObjectsInputNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize end -struct VkSubpassShadingPipelineCreateInfoHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassShading::VkBool32 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} - -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -const VkRemoteAddressNV = Ptr{Cvoid} - -struct VkMemoryGetRemoteAddressInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPipelineInfoEXT = VkPipelineInfoKHR +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkSubpassResolvePerformanceQueryEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - optimal::VkBool32 +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkMultisampledRenderToSingleSampledInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT +struct VkAccelerationStructureBuildSizesInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -struct VkPipelineColorWriteCreateInfoEXT +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} + allowClusterAccelerationStructure::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkImageViewMinLodCreateInfoEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - minLod::Cfloat + partitionedAccelerationStructure::VkBool32 end -struct VkPhysicalDeviceMultiDrawFeaturesEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - multiDraw::VkBool32 + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceMultiDrawPropertiesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 -end - -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 -end - -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 + enablePartitionTranslation::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} - -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 -end - -const VkMicromapEXT_T = Cvoid - -const VkMicromapEXT = Ptr{VkMicromapEXT_T} - -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkPartitionedAccelerationStructureInstancesInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +struct VkBuildPartitionedAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkBuildMicromapFlagsEXT = VkFlags - -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) end -const VkMicromapCreateFlagsEXT = VkFlags - -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 -end +const VkIndirectExecutionSetEXT_T = Cvoid -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} -end +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) -end +const VkIndirectCommandsLayoutEXT_T = Cvoid -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapBuildInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkMicromapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 -end +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags -struct VkMicromapVersionInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -struct VkCopyMicromapToMemoryInfoEXT +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -struct VkCopyMemoryToMicromapInfoEXT +struct VkGeneratedCommandsMemoryRequirementsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -struct VkCopyMicromapInfoEXT +struct VkIndirectExecutionSetPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -struct VkMicromapBuildSizesInfoEXT +struct VkIndirectExecutionSetShaderLayoutInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkIndirectExecutionSetShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT -end - -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} end -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) end -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline end -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectCommandsLayoutCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +struct VkGeneratedCommandsPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + index::UInt32 + shader::VkShaderEXT end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkDescriptorSetBindingReferenceVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkDescriptorSetLayoutHostMappingInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA sType::VkStructureType pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 + imageAlignmentControl::VkBool32 end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA sType::VkStructureType pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 + supportedImageAlignmentMask::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM +struct VkImageAlignmentControlCreateInfoMESA sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 + maximumRequestedAlignment::UInt32 end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM +struct VkPhysicalDeviceDepthClampControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D + depthClampControl::VkBool32 end -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM +struct VkPipelineViewportDepthClampControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} -end - -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize -end - -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - indirectCopy::VkBool32 + hdrVivid::VkBool32 end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV +struct VkHdrVividDynamicMetadataHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) -end - -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 - -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 - -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineOpacityMicromap::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeRobustness::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + fragmentDensityMapLayered::VkBool32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + maxFragmentDensityMapLayers::UInt32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + maxFragmentDensityMapLayers::UInt32 end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkSetPresentConfigNV sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkPhysicalDevicePresentMeteringFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + presentMetering::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkRenderingEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + zeroInitializeDeviceMemory::VkBool32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end + +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] +end + +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] +end + +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = 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_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = 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_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +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 vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +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 vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +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 vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +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 vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +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 vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +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 -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +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 vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +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 vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkRenderPassCreationControlEXT +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - disallowMerging::VkBool32 + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +const VkWaylandSurfaceCreateFlagsKHR = VkFlags -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +const wl_display = Cvoid -struct VkDirectDriverLoadingInfoLUNARG +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} end -struct VkDirectDriverLoadingListLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +# 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 -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) end -struct VkShaderModuleIdentifierEXT +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = 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 vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +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 vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) end -const VkOpticalFlowSessionNV_T = Cvoid - -const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} - -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +const VkXlibSurfaceCreateFlagsKHR = VkFlags -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window end -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const VkOpticalFlowGridSizeFlagsNV = VkFlags +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowUsageFlagsNV = VkFlags - -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) end -const VkOpticalFlowExecuteFlagsNV = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} -end +const VULKAN_H_ = 1 -struct VkOpticalFlowExecuteInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} -end +const VULKAN_CORE_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 + +const VK_USE_64_BIT_PTR_DEFINES = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) -end +const VK_FALSE = Cuint(0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) -end +const VK_TRUE = Cuint(1) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) -end +const VK_MAX_MEMORY_TYPES = Cuint(32) -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - legacyDithering::VkBool32 -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -end +const VK_UUID_SIZE = Cuint(16) -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileProperties::VkBool32 -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) -struct VkTilePropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D -end +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +const VK_MAX_MEMORY_HEAPS = Cuint(16) -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +const VK_VERSION_1_1 = 1 -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) -end +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_LUID_SIZE = Cuint(8) -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) -end +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 -end +const VK_VERSION_1_2 = 1 -struct VkAmigoProfilingSubmitInfoSEC - sType::VkStructureType - pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 -end +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 -end +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV -end +const VK_VERSION_1_3 = 1 -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 -end +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +const VK_VERSION_1_4 = 1 -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 -end +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 -end +const VK_KHR_surface = 1 -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end +const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VkAccelerationStructureCreateFlagsKHR = VkFlags +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_KHR_swapchain = 1 -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_KHR_display = 1 -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} -end +const VK_KHR_DISPLAY_SPEC_VERSION = 23 -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) -end +const VK_KHR_display_swapchain = 1 -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] -end +const VK_KHR_sampler_mirror_clamp_to_edge = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_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_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_KHR_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_KHR_video_decode_queue = 1 -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_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 8 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_KHR_video_encode_h264 = 1 -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const vulkan_video_codec_h264std = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const vulkan_video_codecs_common = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const vulkan_video_codec_h264std_encode = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -# 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} +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_KHR_video_encode_h265 = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const vulkan_video_codec_h265std = 1 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -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 +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -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 +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -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 +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -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 +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const VK_KHR_video_decode_h264 = 1 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -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_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_KHR_dynamic_rendering = 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_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_KHR_multiview = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_KHR_device_group = 1 -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 +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -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 +const VK_KHR_shader_draw_parameters = 1 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -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 +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VK_KHR_maintenance1 = 1 -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 +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_device_group_creation = 1 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const VK_KHR_external_memory_capabilities = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_external_memory_fd = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_external_semaphore_capabilities = 1 -const wl_display = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const wl_surface = Cvoid +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_KHR_external_semaphore = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_external_semaphore_fd = 1 -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end +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 VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_KHR_16bit_storage = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -# 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} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_incremental_present = 1 -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -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 VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end +const VK_KHR_descriptor_update_template = 1 -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} +const VK_KHR_imageless_framebuffer = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 1 +const VK_KHR_external_fence_fd = 1 -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20695,13 +32616,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20773,7 +32694,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -20879,7 +32800,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -20897,16 +32818,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21149,7 +33076,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21273,7 +33200,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21343,6 +33270,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21387,10 +33326,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21451,6 +33396,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21495,7 +33452,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21525,7 +33482,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21577,9 +33534,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21601,6 +33564,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21631,7 +33600,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21651,6 +33620,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21665,7 +33640,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21681,6 +33656,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21699,9 +33694,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21717,6 +33718,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21741,6 +33754,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21759,6 +33784,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -21781,7 +33812,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -21791,6 +33822,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -21815,12 +33858,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -21833,6 +33900,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 diff --git a/lib/x86_64-unknown-freebsd13.2.jl b/lib/x86_64-unknown-freebsd13.2.jl new file mode 100644 index 0000000..abe7269 --- /dev/null +++ b/lib/x86_64-unknown-freebsd13.2.jl @@ -0,0 +1,34134 @@ +const xcb_connection_t = Cvoid + +const xcb_window_t = UInt32 + +const xcb_visualid_t = UInt32 + +const XID = Culong + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const RROutput = XID + +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_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 + 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_IMAGE_USAGE_NOT_SUPPORTED_KHR = -1000023000 + VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR = -1000023001 + VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR = -1000023002 + VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR = -1000023003 + VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 + VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + 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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 + VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + 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_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002 + VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003 + VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004 + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000 + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000 + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001 + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003 + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004 + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005 + VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006 + VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007 + VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008 + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009 + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000 + VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001 + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 + 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_INFO_KHR = 1000023000 + VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001 + VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR = 1000023002 + VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR = 1000023003 + VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_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_INFO_KHR = 1000023011 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR = 1000023012 + VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR = 1000023013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR = 1000023016 + VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR = 1000024002 + 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_CU_MODULE_CREATE_INFO_NVX = 1000029000 + VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 + VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 + 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000040004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 + 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_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_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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 + 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 + 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_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 + 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_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006 + 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_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_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_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR = 1000187000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000187002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + 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_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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 + 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 + 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 + 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 + 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_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000 + 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_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 + 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_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 + 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_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_PRESENT_BARRIER_FEATURES_NV = 1000292000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV = 1000292001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 + VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 + 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 + VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 + VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 + VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 + VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT = 1000311003 + VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT = 1000311004 + VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT = 1000311005 + VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT = 1000311006 + VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT = 1000311007 + VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT = 1000311008 + VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 + VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 + VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 + VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = 1000316003 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = 1000316004 + VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316005 + VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316006 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316007 + VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316008 + VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = 1000316010 + VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = 1000316011 + VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = 1000316012 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316009 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = 1000321000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = 1000322000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000 + 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_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = 1000328000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = 1000328001 + 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_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 + VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 + VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT = 1000341000 + VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT = 1000341001 + VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT = 1000341002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + 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_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT = 1000354000 + VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = 1000354001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000 + 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_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001 + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002 + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003 + VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004 + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005 + VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007 + VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008 + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009 + VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000 + VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 + VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 + VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 + VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 + 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_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 + VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 + VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 + VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 + VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT = 1000396003 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT = 1000396004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT = 1000396005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT = 1000396006 + VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = 1000396007 + VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = 1000396008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 + VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000458002 + VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 + VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 + VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 + VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT = 1000462003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT = 1000342000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV = 1000464000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV = 1000464001 + VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV = 1000464002 + VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV = 1000464003 + VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV = 1000464004 + VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 + VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 + VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 + VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 + 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_RENDERING_INFO_KHR = 1000044000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = 1000044001 + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 + 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 + 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + 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_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_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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 + 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_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + 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_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 + 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_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + 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_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_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = 1000325000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = 1000413000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 + VK_STRUCTURE_TYPE_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 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_READ_ONLY_OPTIMAL = 1000314000 + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 + 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_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 + 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 + 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_READ_ONLY_OPTIMAL_KHR = 1000314000 + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001 + 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_PRIVATE_DATA_SLOT = 1000295000 + 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_CU_MODULE_NVX = 1000029000 + VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001 + 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_BUFFER_COLLECTION_FUCHSIA = 1000366000 + VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 + VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 + 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_MOBILEYE = 65543 + VK_VENDOR_ID_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_G8_B8R8_2PLANE_444_UNORM = 1000330000 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002 + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003 + VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 + 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_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 + 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_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_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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 + 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_RESULT_STATUS_ONLY_KHR = 1000023000 + 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 + VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 + VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001 + VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = 1000396000 + VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT = 1000396001 + 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_CULL_MODE = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP = 1000267011 + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 + 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_ENABLE_NV = 1000205000 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000 + VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000 + VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 + VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 + VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 + VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 + VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 + VK_DYNAMIC_STATE_SAMPLE_MASK_EXT = 1000455006 + VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT = 1000455007 + VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT = 1000455008 + VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT = 1000455009 + VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 + VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 + VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 + VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 + VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 + VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 + VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT = 1000455016 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT = 1000455017 + VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT = 1000455018 + VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT = 1000455019 + VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT = 1000455020 + VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT = 1000455021 + VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT = 1000455022 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV = 1000455023 + VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV = 1000455024 + VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV = 1000455025 + VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV = 1000455026 + VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV = 1000455027 + VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV = 1000455028 + VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV = 1000455029 + VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 + VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 + VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 + 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_EXT = 1000015000 + VK_FILTER_CUBIC_IMG = 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 = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 + VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 + VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 + 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_NONE = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 + 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 = 1000301000 + VK_ATTACHMENT_STORE_OP_NONE_KHR = 1000301000 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_NONE_EXT = 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_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 + 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_UINT8 = 1000265000 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 + 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 + 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_NONE = 0 + 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_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_NONE_KHR = 0 + 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_NONE = 0 + 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_NONE_KHR = 0 + 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_VIDEO_DECODE_OUTPUT_BIT_KHR = 33554432 + VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 67108864 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + 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_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_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 + VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 + VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 + 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + 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_HOST_TRANSFER_BIT = 4194304 + 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 + VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 + VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 + VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +@cenum VkInstanceCreateFlagBits::UInt32 begin + VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 1 + VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 + 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_RDMA_CAPABLE_BIT_NV = 256 + 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_VIDEO_DECODE_BIT_KHR = 32 + VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 64 + VK_QUEUE_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 + 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_NONE = 0 + 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_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_NONE_KHR = 0 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +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 + +@cenum VkEventCreateFlagBits::UInt32 begin + VK_EVENT_CREATE_DEVICE_ONLY_BIT = 1 + VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = 1 + VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +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_TASK_SHADER_INVOCATIONS_BIT_EXT = 2048 + VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 4096 + VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = 8192 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +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_WITH_STATUS_BIT_KHR = 16 + 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_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 + 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_VIDEO_DECODE_SRC_BIT_KHR = 8192 + VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 16384 + 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 + VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 + VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 + VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 + VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 + VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + 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_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 4 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 + 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_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 + 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 + 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_DESCRIPTOR_BUFFER_BIT_EXT = 536870912 + VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 8388608 + VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 1024 + VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 1048576 + VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 + VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 + VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 + 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 = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 2 + 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_EXT = 64 + VK_SHADER_STAGE_MESH_BIT_EXT = 128 + VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 16384 + VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 524288 + 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_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + 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 + +@cenum VkPipelineDepthStencilStateCreateFlagBits::UInt32 begin + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 1 + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 2 + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = 1 + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = 2 + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +@cenum VkPipelineColorBlendStateCreateFlagBits::UInt32 begin + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT = 1 + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM = 1 + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +@cenum VkPipelineLayoutCreateFlagBits::UInt32 begin + VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = 2 + VK_PIPELINE_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +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_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = 4 + VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM = 16 + 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_HOST_ONLY_BIT_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 + 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 = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 + 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_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 + 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_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 + 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_TILE_SHADING_APRON_BIT_QCOM = 256 + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 + VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT = 128 + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM = 16 + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = 32 + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = 64 + 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 + +struct VkPipelineCacheHeaderVersionOne + headerSize::UInt32 + headerVersion::VkPipelineCacheHeaderVersion + vendorID::UInt32 + deviceID::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} +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 + +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} + +function VkClearColorValue(val::__U_VkClearColorValue) + ref = Ref{VkClearColorValue}() + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, ref) + if val isa NTuple{4, Cfloat} + ptr.float32 = val + elseif val isa NTuple{4, Int32} + ptr.int32 = val + elseif val isa NTuple{4, UInt32} + ptr.uint32 = val + end + ref[] +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 + +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} + +function VkClearValue(val::__U_VkClearValue) + ref = Ref{VkClearValue}() + ptr = Base.unsafe_convert(Ptr{VkClearValue}, ref) + if val isa VkClearColorValue + ptr.color = val + elseif val isa VkClearDepthStencilValue + ptr.depthStencil = val + end + ref[] +end + +struct VkClearAttachment + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] +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 vkCreateInstance(pCreateInfo, pAllocator, pInstance, fptr) + ccall(fptr, 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 vkDestroyInstance(instance, pAllocator, fptr) + ccall(fptr, 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 vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceProperties(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetInstanceProcAddr(instance, pName, fptr) + ccall(fptr, PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkGetDeviceProcAddr(device, pName, fptr) + ccall(fptr, 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 vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, fptr) + ccall(fptr, 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 vkDestroyDevice(device, pAllocator, fptr) + ccall(fptr, 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 vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, fptr) + ccall(fptr, 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 vkQueueSubmit(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkQueueWaitIdle(queue, fptr) + ccall(fptr, VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkDeviceWaitIdle(device, fptr) + ccall(fptr, 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 vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory, fptr) + ccall(fptr, 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 vkFreeMemory(device, memory, pAllocator, fptr) + ccall(fptr, 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 vkMapMemory(device, memory, offset, size, flags, ppData, fptr) + ccall(fptr, 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 vkUnmapMemory(device, memory, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, fptr) + ccall(fptr, 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 vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, fptr) + ccall(fptr, 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 vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, fptr) + ccall(fptr, 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 vkBindBufferMemory(device, buffer, memory, memoryOffset, fptr) + ccall(fptr, 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 vkBindImageMemory(device, image, memory, memoryOffset, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageMemoryRequirements(device, image, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, fptr) + ccall(fptr, 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 vkCreateFence(device, pCreateInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkDestroyFence(device, fence, pAllocator, fptr) + ccall(fptr, 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 vkResetFences(device, fenceCount, pFences, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkGetFenceStatus(device, fence, fptr) + ccall(fptr, 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 vkWaitForFences(device, fenceCount, pFences, waitAll, timeout, fptr) + ccall(fptr, 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 vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore, fptr) + ccall(fptr, 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 vkDestroySemaphore(device, semaphore, pAllocator, fptr) + ccall(fptr, 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 vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, fptr) + ccall(fptr, 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 vkDestroyEvent(device, event, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkGetEventStatus(device, event, fptr) + ccall(fptr, VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event, fptr) + ccall(fptr, VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event, fptr) + ccall(fptr, 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 vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, fptr) + ccall(fptr, 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 vkDestroyQueryPool(device, queryPool, pAllocator, fptr) + ccall(fptr, 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 vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, fptr) + ccall(fptr, 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 vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer, fptr) + ccall(fptr, 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 vkDestroyBuffer(device, buffer, pAllocator, fptr) + ccall(fptr, 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 vkCreateBufferView(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, 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 vkDestroyBufferView(device, bufferView, pAllocator, fptr) + ccall(fptr, 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 vkCreateImage(device, pCreateInfo, pAllocator, pImage, fptr) + ccall(fptr, 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 vkDestroyImage(device, image, pAllocator, fptr) + ccall(fptr, 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 vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, fptr) + ccall(fptr, 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 vkCreateImageView(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, 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 vkDestroyImageView(device, imageView, pAllocator, fptr) + ccall(fptr, 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 vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, fptr) + ccall(fptr, 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 vkDestroyShaderModule(device, shaderModule, pAllocator, fptr) + ccall(fptr, 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 vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, fptr) + ccall(fptr, 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 vkDestroyPipelineCache(device, pipelineCache, pAllocator, fptr) + ccall(fptr, 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 vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, fptr) + ccall(fptr, 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 vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, 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 vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkDestroyPipeline(device, pipeline, pAllocator, fptr) + ccall(fptr, 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 vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, fptr) + ccall(fptr, 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 vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, fptr) + ccall(fptr, 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 vkCreateSampler(device, pCreateInfo, pAllocator, pSampler, fptr) + ccall(fptr, 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 vkDestroySampler(device, sampler, pAllocator, fptr) + ccall(fptr, 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 vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout, fptr) + ccall(fptr, 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 vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator, fptr) + ccall(fptr, 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 vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool, fptr) + ccall(fptr, 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 vkDestroyDescriptorPool(device, descriptorPool, pAllocator, fptr) + ccall(fptr, 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 vkResetDescriptorPool(device, descriptorPool, flags, fptr) + ccall(fptr, 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 vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets, fptr) + ccall(fptr, 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 vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets, fptr) + ccall(fptr, 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 vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies, fptr) + ccall(fptr, 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 vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, fptr) + ccall(fptr, 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 vkDestroyFramebuffer(device, framebuffer, pAllocator, fptr) + ccall(fptr, 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 vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkDestroyRenderPass(device, renderPass, pAllocator, fptr) + ccall(fptr, 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 vkGetRenderAreaGranularity(device, renderPass, pGranularity, fptr) + ccall(fptr, 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 vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, fptr) + ccall(fptr, 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 vkDestroyCommandPool(device, commandPool, pAllocator, fptr) + ccall(fptr, 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 vkResetCommandPool(device, commandPool, flags, fptr) + ccall(fptr, 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 vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers, fptr) + ccall(fptr, 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 vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, fptr) + ccall(fptr, 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 vkBeginCommandBuffer(commandBuffer, pBeginInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkEndCommandBuffer(commandBuffer, fptr) + ccall(fptr, VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkResetCommandBuffer(commandBuffer, flags, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, 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 vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, fptr) + ccall(fptr, 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 vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, fptr) + ccall(fptr, 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 vkCmdSetLineWidth(commandBuffer, lineWidth, fptr) + ccall(fptr, 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 vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, fptr) + ccall(fptr, 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 vkCmdSetBlendConstants(commandBuffer, blendConstants, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, fptr) + ccall(fptr, 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 vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, fptr) + ccall(fptr, 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 vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, fptr) + ccall(fptr, 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 vkCmdSetStencilReference(commandBuffer, faceMask, reference, fptr) + ccall(fptr, 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 vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets, fptr) + ccall(fptr, 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 vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, fptr) + ccall(fptr, 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 vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, fptr) + ccall(fptr, 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 vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, fptr) + ccall(fptr, 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 vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, fptr) + ccall(fptr, 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 vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, 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 vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 vkCmdDispatchIndirect(commandBuffer, buffer, offset, fptr) + ccall(fptr, 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 vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, fptr) + ccall(fptr, 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 vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, fptr) + ccall(fptr, 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 vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, fptr) + ccall(fptr, 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 vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, fptr) + ccall(fptr, 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 vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, fptr) + ccall(fptr, 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 vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, fptr) + ccall(fptr, 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 vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, fptr) + ccall(fptr, 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 vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, fptr) + ccall(fptr, 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 vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, fptr) + ccall(fptr, 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 vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, fptr) + ccall(fptr, 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 vkCmdSetEvent(commandBuffer, event, stageMask, fptr) + ccall(fptr, 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 vkCmdResetEvent(commandBuffer, event, stageMask, fptr) + ccall(fptr, 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 vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, fptr) + ccall(fptr, 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 vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, fptr) + ccall(fptr, 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 vkCmdBeginQuery(commandBuffer, queryPool, query, flags, fptr) + ccall(fptr, 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 vkCmdEndQuery(commandBuffer, queryPool, query, fptr) + ccall(fptr, 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 vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, 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 vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, fptr) + ccall(fptr, 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 vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, fptr) + ccall(fptr, 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 vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderPass(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers, fptr) + ccall(fptr, 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 = 1 + 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_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 + 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_ZERO_INITIALIZE_BIT_EXT = 8 + 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_ZIRCON_VMO_BIT_FUCHSIA = 2048 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 + 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_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 +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 vkEnumerateInstanceVersion(pApiVersion, fptr) + ccall(fptr, VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMask(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkTrimCommandPool(device, commandPool, flags, fptr) + ccall(fptr, 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 vkGetDeviceQueue2(device, pQueueInfo, pQueue, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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_COREAVI_PROPRIETARY = 15 + VK_DRIVER_ID_JUICE_PROPRIETARY = 16 + VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17 + VK_DRIVER_ID_MESA_TURNIP = 18 + VK_DRIVER_ID_MESA_V3DV = 19 + VK_DRIVER_ID_MESA_PANVK = 20 + VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21 + VK_DRIVER_ID_MESA_VENUS = 22 + VK_DRIVER_ID_MESA_DOZEN = 23 + VK_DRIVER_ID_MESA_NVK = 24 + VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 + 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_RANGECLAMP_QCOM = 1000521000 + 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_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 + 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 + 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 vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkResetQueryPool(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, 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 vkGetSemaphoreCounterValue(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphores(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphore(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkFlags64 = UInt64 + +const VkPrivateDataSlot_T = Cvoid + +const VkPrivateDataSlot = Ptr{VkPrivateDataSlot_T} + +@cenum VkPipelineCreationFeedbackFlagBits::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 4 + 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 = 2147483647 +end + +const VkPipelineCreationFeedbackFlags = VkFlags + +@cenum VkToolPurposeFlagBits::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT = 2 + VK_TOOL_PURPOSE_TRACING_BIT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + 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_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkToolPurposeFlags = VkFlags + +const VkPrivateDataSlotCreateFlags = VkFlags + +const VkPipelineStageFlags2 = VkFlags64 + +const VkPipelineStageFlagBits2 = VkFlags64 + +const VkAccessFlags2 = VkFlags64 + +const VkAccessFlagBits2 = VkFlags64 + +@cenum VkSubmitFlagBits::UInt32 begin + VK_SUBMIT_PROTECTED_BIT = 1 + VK_SUBMIT_PROTECTED_BIT_KHR = 1 + VK_SUBMIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubmitFlags = VkFlags + +@cenum VkRenderingFlagBits::UInt32 begin + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 1 + VK_RENDERING_SUSPENDING_BIT = 2 + VK_RENDERING_RESUMING_BIT = 4 + VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 + VK_RENDERING_SUSPENDING_BIT_KHR = 2 + VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 + VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderingFlags = VkFlags + +const VkFormatFeatureFlags2 = VkFlags64 + +const VkFormatFeatureFlagBits2 = VkFlags64 + +struct VkPhysicalDeviceVulkan13Features + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 + pipelineCreationCacheControl::VkBool32 + privateData::VkBool32 + shaderDemoteToHelperInvocation::VkBool32 + shaderTerminateInvocation::VkBool32 + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 + synchronization2::VkBool32 + textureCompressionASTC_HDR::VkBool32 + shaderZeroInitializeWorkgroupMemory::VkBool32 + dynamicRendering::VkBool32 + shaderIntegerDotProduct::VkBool32 + maintenance4::VkBool32 +end + +struct VkPhysicalDeviceVulkan13Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 + maxInlineUniformTotalSize::UInt32 + integerDotProduct8BitUnsignedAccelerated::VkBool32 + integerDotProduct8BitSignedAccelerated::VkBool32 + integerDotProduct8BitMixedSignednessAccelerated::VkBool32 + integerDotProduct4x8BitPackedUnsignedAccelerated::VkBool32 + integerDotProduct4x8BitPackedSignedAccelerated::VkBool32 + integerDotProduct4x8BitPackedMixedSignednessAccelerated::VkBool32 + integerDotProduct16BitUnsignedAccelerated::VkBool32 + integerDotProduct16BitSignedAccelerated::VkBool32 + integerDotProduct16BitMixedSignednessAccelerated::VkBool32 + integerDotProduct32BitUnsignedAccelerated::VkBool32 + integerDotProduct32BitSignedAccelerated::VkBool32 + integerDotProduct32BitMixedSignednessAccelerated::VkBool32 + integerDotProduct64BitUnsignedAccelerated::VkBool32 + integerDotProduct64BitSignedAccelerated::VkBool32 + integerDotProduct64BitMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating8BitSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating16BitSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating32BitSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating64BitSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated::VkBool32 + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 + maxBufferSize::VkDeviceSize +end + +struct VkPipelineCreationFeedback + flags::VkPipelineCreationFeedbackFlags + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedback} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedback} +end + +struct VkPhysicalDeviceShaderTerminateInvocationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTerminateInvocation::VkBool32 +end + +struct VkPhysicalDeviceToolProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlags + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +struct VkPhysicalDevicePrivateDataFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlags +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +struct VkMemoryBarrier2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 +end + +struct VkBufferMemoryBarrier2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageMemoryBarrier2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkDependencyInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + dependencyFlags::VkDependencyFlags + memoryBarrierCount::UInt32 + pMemoryBarriers::Ptr{VkMemoryBarrier2} + bufferMemoryBarrierCount::UInt32 + pBufferMemoryBarriers::Ptr{VkBufferMemoryBarrier2} + imageMemoryBarrierCount::UInt32 + pImageMemoryBarriers::Ptr{VkImageMemoryBarrier2} +end + +struct VkSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 + stageMask::VkPipelineStageFlags2 + deviceIndex::UInt32 +end + +struct VkCommandBufferSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandBuffer::VkCommandBuffer + deviceMask::UInt32 +end + +struct VkSubmitInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubmitFlags + waitSemaphoreInfoCount::UInt32 + pWaitSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} + commandBufferInfoCount::UInt32 + pCommandBufferInfos::Ptr{VkCommandBufferSubmitInfo} + signalSemaphoreInfoCount::UInt32 + pSignalSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} +end + +struct VkPhysicalDeviceSynchronization2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + synchronization2::VkBool32 +end + +struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderZeroInitializeWorkgroupMemory::VkBool32 +end + +struct VkPhysicalDeviceImageRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkBufferCopy2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkCopyBufferInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcBuffer::VkBuffer + dstBuffer::VkBuffer + regionCount::UInt32 + pRegions::Ptr{VkBufferCopy2} +end + +struct VkImageCopy2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkCopyImageInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} +end + +struct VkBufferImageCopy2 + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkCopyBufferToImageInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcBuffer::VkBuffer + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkBufferImageCopy2} +end + +struct VkCopyImageToBufferInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcImage::VkImage + srcImageLayout::VkImageLayout + dstBuffer::VkBuffer + regionCount::UInt32 + pRegions::Ptr{VkBufferImageCopy2} +end + +struct VkImageBlit2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkBlitImageInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageBlit2} + filter::VkFilter +end + +struct VkImageResolve2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkResolveImageInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageResolve2} +end + +struct VkPhysicalDeviceSubgroupSizeControlFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +struct VkPhysicalDeviceInlineUniformBlockFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlock + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkRenderingAttachmentInfo + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] +end + +struct VkRenderingInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderingFlags + renderArea::VkRect2D + layerCount::UInt32 + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkRenderingAttachmentInfo} + pDepthAttachment::Ptr{VkRenderingAttachmentInfo} + pStencilAttachment::Ptr{VkRenderingAttachmentInfo} +end + +struct VkPipelineRenderingCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat +end + +struct VkPhysicalDeviceDynamicRenderingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRendering::VkBool32 +end + +struct VkCommandBufferInheritanceRenderingInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderingFlags + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat + rasterizationSamples::VkSampleCountFlagBits +end + +struct VkPhysicalDeviceShaderIntegerDotProductFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerDotProduct::VkBool32 +end + +struct VkPhysicalDeviceShaderIntegerDotProductProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + integerDotProduct8BitUnsignedAccelerated::VkBool32 + integerDotProduct8BitSignedAccelerated::VkBool32 + integerDotProduct8BitMixedSignednessAccelerated::VkBool32 + integerDotProduct4x8BitPackedUnsignedAccelerated::VkBool32 + integerDotProduct4x8BitPackedSignedAccelerated::VkBool32 + integerDotProduct4x8BitPackedMixedSignednessAccelerated::VkBool32 + integerDotProduct16BitUnsignedAccelerated::VkBool32 + integerDotProduct16BitSignedAccelerated::VkBool32 + integerDotProduct16BitMixedSignednessAccelerated::VkBool32 + integerDotProduct32BitUnsignedAccelerated::VkBool32 + integerDotProduct32BitSignedAccelerated::VkBool32 + integerDotProduct32BitMixedSignednessAccelerated::VkBool32 + integerDotProduct64BitUnsignedAccelerated::VkBool32 + integerDotProduct64BitSignedAccelerated::VkBool32 + integerDotProduct64BitMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating8BitSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating16BitSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating32BitSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated::VkBool32 + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating64BitSignedAccelerated::VkBool32 + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkFormatProperties3 + sType::VkStructureType + pNext::Ptr{Cvoid} + linearTilingFeatures::VkFormatFeatureFlags2 + optimalTilingFeatures::VkFormatFeatureFlags2 + bufferFeatures::VkFormatFeatureFlags2 +end + +struct VkPhysicalDeviceMaintenance4Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance4::VkBool32 +end + +struct VkPhysicalDeviceMaintenance4Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBufferSize::VkDeviceSize +end + +struct VkDeviceBufferMemoryRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkBufferCreateInfo} +end + +struct VkDeviceImageMemoryRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + planeAspect::VkImageAspectFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlot ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlot = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlot ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlot = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateData ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateData = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateData ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateData = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2 ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2 ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2 ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2 ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2 ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2 ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2 ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2 ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2 ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2 ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2 ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2 ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRendering ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRendering = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRendering = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullMode ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullMode = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFace ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFace = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopology ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopology = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCount ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCount ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2 ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnable ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnable = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnable ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnable = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOp ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnable ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnable = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnable ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnable = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOp ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnable ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnable = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnable ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnable = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnable ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnable = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirements ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirements ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirements ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirements = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolProperties(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +end + +function vkGetPhysicalDeviceToolProperties(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +end + +function vkCreatePrivateDataSlot(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlot, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkCreatePrivateDataSlot(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlot(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlot, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkDestroyPrivateDataSlot(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateData(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateData, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkSetPrivateData(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateData(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateData, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +function vkGetPrivateData(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +function vkCmdSetEvent2(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkCmdCopyBuffer2(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdBeginRendering(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRendering, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRendering(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRendering(commandBuffer) + ccall((:vkCmdEndRendering, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRendering(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdSetCullMode(commandBuffer, cullMode) + ccall((:vkCmdSetCullMode, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetCullMode(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFace(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFace, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetFrontFace(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopology(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopology, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetPrimitiveTopology(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCount(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCount, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetViewportWithCount(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCount(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCount, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdSetScissorWithCount(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdBindVertexBuffers2(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnable(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnable, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthTestEnable(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnable(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnable, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthWriteEnable(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOp(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOp, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthCompareOp(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnable(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnable, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetDepthBoundsTestEnable(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnable(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnable, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilTestEnable(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOp(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOp, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +function vkCmdSetStencilOp(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +function vkCmdSetRasterizerDiscardEnable(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnable, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +end + +function vkCmdSetRasterizerDiscardEnable(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +end + +function vkCmdSetDepthBiasEnable(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnable, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +end + +function vkCmdSetDepthBiasEnable(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +end + +function vkCmdSetPrimitiveRestartEnable(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnable, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end + +function vkCmdSetPrimitiveRestartEnable(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end + +function vkGetDeviceBufferMemoryRequirements(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirements(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirements(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirements(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 2147483647 +end + +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryUnmapFlags = VkFlags + +const VkPipelineCreateFlags2 = VkFlags64 + +const VkPipelineCreateFlagBits2 = VkFlags64 + +const VkBufferUsageFlags2 = VkFlags64 + +const VkBufferUsageFlagBits2 = VkFlags64 + +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkHostImageCopyFlags = VkFlags + +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 +end + +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end + +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority +end + +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 +end + +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} +end + +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 +end + +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 +end + +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 +end + +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +struct VkPhysicalDeviceIndexTypeUint8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkMemoryMapInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryUnmapInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory +end + +struct VkPhysicalDeviceMaintenance5Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance5::VkBool32 +end + +struct VkPhysicalDeviceMaintenance5Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 +end + +struct VkRenderingAreaInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat +end + +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource +end + +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} +end + +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout +end + +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 +end + +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 +end + +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 +end + +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} +end + +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} +end + +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 +end + +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 +end + +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} +end + +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} +end + +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} +end + +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} +end + +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} +end + +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 +end + +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 +end + +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior +end + +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end + +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 +end + +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end + +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkCopyMemoryToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} +end + +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} +end + +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} +end + +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange +end + +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize +end + +struct VkHostImageCopyDevicePerformanceQuery + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStipple = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2 ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2 ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end + +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end + +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end + +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end + +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + 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 vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, 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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + 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 vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, 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 vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, 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 vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, 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 vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, 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 vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, 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 vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, 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 vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, 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 vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, 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 vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, 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 vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodecOperationFlagsKHR = VkFlags + +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end + +const VkVideoChromaSubsamplingFlagsKHR = VkFlags + +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end + +const VkVideoComponentBitDepthFlagsKHR = VkFlags + +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryResultStatusSupport::VkBool32 +end + +struct VkQueueFamilyVideoPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperations::VkVideoCodecOperationFlagsKHR +end + +struct VkVideoProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +end + +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end + +struct VkVideoCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties +end + +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end + +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end + +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView +end + +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} +end + +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements +end + +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize +end + +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end + +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end + +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end + +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end + +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) +const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) +const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) +end + +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, 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 vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, 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 vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, 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 vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) +end + +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, 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 vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, 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 vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +end + +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeUsageFlagsKHR = VkFlags + +const VkVideoDecodeFlagsKHR = VkFlags + +struct VkVideoDecodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeCapabilityFlagsKHR +end + +struct VkVideoDecodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoDecodeUsageFlagsKHR +end + +struct VkVideoDecodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +end + +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264AspectRatioIdc::UInt32 begin + 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 + STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +end + +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] +end + +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] +end + +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end + +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end + +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] +end + +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] +end + +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 +end + +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end + +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 +end + +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] +end + +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ref[] +end + +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] +end + +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end + +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end + +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH264QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 +end + +struct VkVideoEncodeH264SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc +end + +struct VkVideoEncodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH264NaluSliceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} +end + +struct VkVideoEncodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 +end + +struct VkVideoEncodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} +end + +struct VkVideoEncodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc +end + +struct VkVideoEncodeH264RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR +end + +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoH265AspectRatioIdc::UInt32 begin + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0 + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1 + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2 + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3 + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4 + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5 + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6 + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7 + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8 + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9 + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10 + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11 + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12 + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13 + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14 + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15 + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16 + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255 + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 2147483647 + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +end + +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 + +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdFlags}, f::Symbol) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sub_pic_hrd_params_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sub_pic_cpb_params_in_pic_timing_sei_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :fixed_pic_rate_general_flag && return (Ptr{UInt32}(x + 0), 4, 8) + f === :fixed_pic_rate_within_cvs_flag && return (Ptr{UInt32}(x + 0), 12, 8) + f === :low_delay_hrd_flag && return (Ptr{UInt32}(x + 0), 20, 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdFlags, f::Symbol) + r = Ref{StdVideoH265HrdFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) + ref = Ref{StdVideoH265HrdFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ptr.sub_pic_hrd_params_present_flag = sub_pic_hrd_params_present_flag + ptr.sub_pic_cpb_params_in_pic_timing_sei_flag = sub_pic_cpb_params_in_pic_timing_sei_flag + ptr.fixed_pic_rate_general_flag = fixed_pic_rate_general_flag + ptr.fixed_pic_rate_within_cvs_flag = fixed_pic_rate_within_cvs_flag + ptr.low_delay_hrd_flag = low_delay_hrd_flag + ref[] +end + +struct StdVideoH265HrdParameters + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] +end + +struct StdVideoH265VpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VpsFlags}, f::Symbol) + f === :vps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :vps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :vps_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :vps_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VpsFlags, f::Symbol) + r = Ref{StdVideoH265VpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265VpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) + ptr.vps_temporal_id_nesting_flag = vps_temporal_id_nesting_flag + ptr.vps_sub_layer_ordering_info_present_flag = vps_sub_layer_ordering_info_present_flag + ptr.vps_timing_info_present_flag = vps_timing_info_present_flag + ptr.vps_poc_proportional_to_timing_flag = vps_poc_proportional_to_timing_flag + ref[] +end + +struct StdVideoH265ProfileTierLevelFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol) + f === :general_tier_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :general_progressive_source_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :general_interlaced_source_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :general_non_packed_constraint_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :general_frame_only_constraint_flag && return (Ptr{UInt32}(x + 0), 4, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevelFlags, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevelFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) + ref = Ref{StdVideoH265ProfileTierLevelFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) + ptr.general_tier_flag = general_tier_flag + ptr.general_progressive_source_flag = general_progressive_source_flag + ptr.general_interlaced_source_flag = general_interlaced_source_flag + ptr.general_non_packed_constraint_flag = general_non_packed_constraint_flag + ptr.general_frame_only_constraint_flag = general_frame_only_constraint_flag + ref[] +end + +struct StdVideoH265ProfileTierLevel + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] +end + +struct StdVideoH265VideoParameterSet + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] +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 + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :colour_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :neutral_chroma_indication_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :field_seq_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :frame_field_info_present_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :default_display_window_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vui_timing_info_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :vui_poc_proportional_to_timing_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :tiles_fixed_structure_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :motion_vectors_over_pic_boundaries_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :restricted_ref_pic_lists_flag && return (Ptr{UInt32}(x + 0), 17, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH265SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{StdVideoH265SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.colour_description_present_flag = colour_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.neutral_chroma_indication_flag = neutral_chroma_indication_flag + ptr.field_seq_flag = field_seq_flag + ptr.frame_field_info_present_flag = frame_field_info_present_flag + ptr.default_display_window_flag = default_display_window_flag + ptr.vui_timing_info_present_flag = vui_timing_info_present_flag + ptr.vui_poc_proportional_to_timing_flag = vui_poc_proportional_to_timing_flag + ptr.vui_hrd_parameters_present_flag = vui_hrd_parameters_present_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.tiles_fixed_structure_flag = tiles_fixed_structure_flag + ptr.motion_vectors_over_pic_boundaries_flag = motion_vectors_over_pic_boundaries_flag + ptr.restricted_ref_pic_lists_flag = restricted_ref_pic_lists_flag + ref[] +end + +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingAttachmentLocationInfo * pLocationInfo ) +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo ) +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR ) ( VkDevice device , const VkMemoryMapInfo * pMemoryMapInfo , void * * ppData ) +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR ) ( VkDevice device , const VkMemoryUnmapInfo * pMemoryUnmapInfo ) +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo , VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR ) ( VkDevice device , const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo , VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo , size_t * pDataSize , void * pData ) +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEncodeInfoKHR * pEncodeInfo ) +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkDeviceSize size , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR ) ( VkDevice device , const VkRenderingAreaInfo * pRenderingAreaInfo , VkExtent2D * pGranularity ) +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR ) ( VkDevice device , const VkDeviceImageSubresourceInfo * pInfo , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkPresentWait2InfoKHR * pPresentWait2Info ) +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR ) ( VkDevice device , const VkPipelineBinaryCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineBinaryHandlesInfoKHR * pBinaries ) +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR ) ( VkDevice device , VkPipelineBinaryKHR pipelineBinary , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR ) ( VkDevice device , const VkPipelineCreateInfoKHR * pPipelineCreateInfo , VkPipelineBinaryKeyKHR * pPipelineKey ) +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR ) ( VkDevice device , const VkPipelineBinaryDataInfoKHR * pInfo , VkPipelineBinaryKeyKHR * pPipelineBinaryKey , size_t * pPipelineBinaryDataSize , void * pPipelineBinaryData ) +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR ) ( VkDevice device , const VkReleaseCapturedPipelineDataInfoKHR * pInfo , const VkAllocationCallbacks * pAllocator ) +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo ) +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR ) ( VkCommandBuffer commandBuffer , const VkPushConstantsInfo * pPushConstantsInfo ) +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetInfo * pPushDescriptorSetInfo ) +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR ) ( VkCommandBuffer commandBuffer , const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo ) +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT ) ( VkCommandBuffer commandBuffer , const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo ) +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) ( VkCommandBuffer commandBuffer , const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandle64NVX = 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 vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, 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 + +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@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 vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 + +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + 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 + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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 vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +struct VkMultiviewPerViewAttributesInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 discardRectangleEnable ) +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT ) ( VkCommandBuffer commandBuffer , VkDiscardRectangleModeEXT discardRectangleMode ) +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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 + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + 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 vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, 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 vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, 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 vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, 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 vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end + +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures + +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties + +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock + +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo + +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 vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, 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 + +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD + +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 + +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +end + +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +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 + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, 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 vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, 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 vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, 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 vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, 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 vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, 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 vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, 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 vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, 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 vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureNV_T = Cvoid + +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} + +@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 = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + 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_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 +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 VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 +end + +@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_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + 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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + 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 VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} +end + +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), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +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_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV 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_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV 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 , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * 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 vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, 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 vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, 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 vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, 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 vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, 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 vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, 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 vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, 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 + +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo + +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 + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, 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} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, 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 + +const VkTimeDomainEXT = VkTimeDomainKHR + +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainKHR * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoKHR * 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, 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 + +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures + +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits + +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags + +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo + +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback + +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + +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 vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +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_vkCmdSetExclusiveScissorEnableNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkBool32 * pExclusiveScissorEnables ) +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, 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 + +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 +end + +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + 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} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, 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 vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +end + +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), 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 + +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val + end + ref[] +end + +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data + ref[] +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 vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, 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 vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, 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 + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, 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 + +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures + +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties + +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo + +@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 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::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 + +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits + +const VkToolPurposeFlagsEXT = VkToolPurposeFlags + +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) +end + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), 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_SHADER_VALIDATION_CACHE_EXT = 7 + 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 + +const VkComponentTypeNV = VkComponentTypeKHR + +const VkScopeNV = VkScopeKHR + +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 + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, 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 + +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceProvokingVertexPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +end + +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexMode::VkProvokingVertexModeEXT +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 + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkLineRasterizationModeEXT = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo + +# 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 + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, 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 + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +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 vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, 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 vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, 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 vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, 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 vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, 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 vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits + +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags + +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures + +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties + +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy + +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy + +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo + +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo + +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo + +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo + +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize + +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery + +const VkSubresourceLayout2EXT = VkSubresourceLayout2 + +const VkImageSubresource2EXT = VkImageSubresource2 + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT ) ( VkDevice device , const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo ) +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT ) ( VkDevice device , const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo ) +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT ) ( VkDevice device , const VkCopyImageToImageInfo * pCopyImageToImageInfo ) +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT ) ( VkDevice device , uint32_t transitionCount , const VkHostImageLayoutTransitionInfo * pTransitions ) +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2 * pSubresource , VkSubresourceLayout2 * pLayout ) +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} + +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end + +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end + +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end + +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end + +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) +end + +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 +end + +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minPlacedMemoryMapAlignment::VkDeviceSize +end + +struct VkMemoryMapPlacedInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPlacedAddress::Ptr{Cvoid} +end + +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 +end + +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR + +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR + +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR + +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR + +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR + +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR + +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR + +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR + +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR + +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR + +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR + +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoKHR * pReleaseInfo ) +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} + +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures + +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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + 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 vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, 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 vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, 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 vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, 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 vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, 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 vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inheritedViewportScissor2D::VkBool32 +end + +struct VkCommandBufferInheritanceViewportScissorInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 +end + +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat +end + +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT ) ( VkCommandBuffer commandBuffer , const VkDepthBiasInfoEXT * pDepthBiasInfo ) +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) +end + +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) +end + +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 +end + +const VkDeviceMemoryReportFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMemoryReport::VkBool32 +end + +struct VkDeviceMemoryReportCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} + +struct VkDeviceDeviceMemoryReportCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end + +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end + +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR + +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +struct VkPhysicalDevicePresentBarrierFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentBarrier::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentBarrierNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentBarrierSupported::VkBool32 +end + +struct VkSwapchainPresentBarrierCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentBarrierEnable::VkBool32 +end + +const VkPrivateDataSlotEXT = VkPrivateDataSlot + +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags + +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures + +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo + +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures + +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + 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 + +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 +end + +const VkTileShadingRenderPassFlagsQCOM = VkFlags + +struct VkPhysicalDeviceTileShadingFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 +end + +struct VkPhysicalDeviceTileShadingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D +end + +struct VkRenderPassTileShadingCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D +end + +struct VkPerTileBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPerTileEndInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkDispatchTileInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM ) ( VkCommandBuffer commandBuffer , const VkDispatchTileInfoQCOM * pDispatchTileInfo ) +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM ) ( VkCommandBuffer commandBuffer , const VkPerTileEndInfoQCOM * pPerTileEndInfo ) +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) +end + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) +end + +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) +end + +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) +end + +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) +end + +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) +end + +struct VkQueryLowLatencySupportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pQueriedLowLatencyData::Ptr{Cvoid} +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize +end + +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDensityMapDescriptorSize::Csize_t +end + +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::VkBool32 +end + +struct VkDescriptorAddressInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat +end + +struct VkDescriptorBufferBindingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + usage::VkBufferUsageFlags +end + +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} + +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] +end + +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] +end + +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageViewCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView +end + +struct VkSamplerCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampler::VkSampler +end + +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureDescriptorData::Ptr{Cvoid} +end + +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV +end + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +end + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +end + +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +end + +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +end + +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +end + +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +end + +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +end + +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +end + +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +end + +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +end + +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end + +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags + +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibrary::VkBool32 +end + +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 +end + +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT +end + +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 +end + +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 +end + +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 +end + +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 +end + +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits +end + +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} + +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +end + +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +end + +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +end + +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags + +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags + +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} + +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end + +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] +end + +struct VkAccelerationStructureMotionInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV +end + +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +end + +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat +end + +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +end + +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} + +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] +end + +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] +end + +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 +end + +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcr2plane444Formats::VkBool32 +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 VkCopyCommandTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures + +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkImageCompressionFlagsEXT = VkFlags + +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkImageCompressionFixedRateFlagsEXT = VkFlags + +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionControl::VkBool32 +end + +struct VkImageCompressionControlEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} +end + +struct VkImageCompressionPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT +end + +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopLayout::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceFaultFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 +end + +struct VkDeviceFaultCountsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize +end + +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize +end + +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 +end + +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} +end + +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} + +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +end + +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +end + +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 +end + +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatRgba10x6WithoutYCbCrSampler::VkBool32 +end + +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorType::VkBool32 +end + +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT + +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} +end + +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT + +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} +end + +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT + +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexInputDynamicState::VkBool32 +end + +struct VkVertexInputBindingDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 +end + +struct VkVertexInputAttributeDescription2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} + +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 vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +end + +struct VkPhysicalDeviceDrmPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 +end + +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDeviceAddressBindingFlagsEXT = VkFlags + +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + reportAddressBinding::VkBool32 +end + +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT +end + +struct VkPhysicalDeviceDepthClipControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipControl::VkBool32 +end + +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 +end + +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 +end + +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + +struct VkSubpassShadingPipelineCreateInfoHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 +end + +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassShading::VkBool32 +end + +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +end + +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +end + +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} + +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +const VkRemoteAddressNV = Ptr{Cvoid} + +struct VkMemoryGetRemoteAddressInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryRDMA::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +end + +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +end + +const VkPipelineInfoEXT = VkPipelineInfoKHR + +struct VkPipelinePropertiesIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineIdentifier::NTuple{16, UInt8} +end + +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelinePropertiesIdentifier::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} + +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end + +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +end + +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + frameBoundary::VkBool32 +end + +struct VkFrameBoundaryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multisampledRenderToSingleSampled::VkBool32 +end + +struct VkSubpassResolvePerformanceQueryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + optimal::VkBool32 +end + +struct VkMultisampledRenderToSingleSampledInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits +end + +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} + +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +end + +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +end + +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +end + +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +end + +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +end + +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +end + +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +end + +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +end + +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end + +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end + +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 +end + +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +end + +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +end + +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +end + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties + +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::VkBool32 +end + +struct VkImageViewMinLodCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::Cfloat +end + +struct VkPhysicalDeviceMultiDrawFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multiDraw::VkBool32 +end + +struct VkPhysicalDeviceMultiDrawPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiDrawCount::UInt32 +end + +struct VkMultiDrawInfoEXT + firstVertex::UInt32 + vertexCount::UInt32 +end + +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 + indexCount::UInt32 + vertexOffset::Int32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} + +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end + +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +end + +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end + +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +end + +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 +end + +struct VkPhysicalDeviceShaderTileImageFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 +end + +struct VkPhysicalDeviceShaderTileImagePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 +end + +const VkMicromapEXT_T = Cvoid + +const VkMicromapEXT = Ptr{VkMicromapEXT_T} + +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 +end + +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 +end + +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} + +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end + +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) +end + +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] +end + +struct VkMicromapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress +end + +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 +end + +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 +end + +struct VkMicromapVersionInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end + +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end + +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end + +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT +end + +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 +end + +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] +end + +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} + +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +end + +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) +end + +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +end + +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +end + +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +end + +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +end + +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +end + +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +end + +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +end + +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +end + +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +end + +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +end + +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +end + +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +end + +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +end + +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +end + +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +end + +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +end + +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +end + +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +end + +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end + +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end + +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end + +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end + +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end + +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +end + +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end + +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end + +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 +end + +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize +end + +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterShadingRate::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} + +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 +end + +struct VkSamplerBorderColorComponentMappingCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + components::VkComponentMapping + srgb::VkBool32 +end + +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pageableDeviceLocalMemory::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +end + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +end + +struct VkPhysicalDeviceShaderCorePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 +end + +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 + +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 + +struct VkDeviceQueueShaderCoreControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreCount::UInt32 +end + +struct VkPhysicalDeviceSchedulingControlsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControls::VkBool32 +end + +struct VkPhysicalDeviceSchedulingControlsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM +end + +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 +end + +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 +end + +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 +end + +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 +end + +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +end + +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +end + +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +end + +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +end + +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nonSeamlessCubeMap::VkBool32 +end + +struct VkPhysicalDeviceRenderPassStripedFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStriped::VkBool32 +end + +struct VkPhysicalDeviceRenderPassStripedPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 +end + +struct VkRenderPassStripeInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeArea::VkRect2D +end + +struct VkRenderPassStripeBeginInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} +end + +struct VkRenderPassStripeSubmitInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} +end + +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapOffset::VkBool32 +end + +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D +end + +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} +end + +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT + +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize +end + +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectCopy::VkBool32 +end + +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedQueues::VkQueueFlags +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} + +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +end + +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +end + +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +end + +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +end + +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 + +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 + +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV +end + +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryDecompression::VkBool32 +end + +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +end + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +end + +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end + +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 +end + +struct VkComputePipelineIndirectBufferInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress +end + +struct VkPipelineIndirectDeviceAddressInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline +end + +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress +end + +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV ) ( VkDevice device , const VkComputePipelineCreateInfo * pCreateInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV ) ( VkDevice device , const VkPipelineIndirectDeviceAddressInfoNV * pInfo ) +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end + +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end + +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end + +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) +end + +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + spheres::VkBool32 + linearSweptSpheres::VkBool32 +end + +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] +end + +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] +end + +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 +end + +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionControlSwapchain::VkBool32 +end + +struct VkImageViewSampleWeightCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 +end + +struct VkPhysicalDeviceImageProcessingFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 +end + +struct VkPhysicalDeviceImageProcessingPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D +end + +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 +end + +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCommandBufferNestingLevel::UInt32 +end + +struct VkExternalMemoryAcquireUnmodifiedEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireUnmodifiedMemory::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicPrimitiveTopologyUnrestricted::VkBool32 +end + +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp +end + +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +end + +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +end + +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +end + +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +end + +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +end + +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +end + +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +end + +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +end + +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +end + +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +end + +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +end + +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +end + +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +end + +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +end + +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +end + +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +end + +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +end + +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +end + +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +end + +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +end + +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +end + +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +end + +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +end + +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +end + +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +end + +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +end + +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +end + +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +end + +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end + +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end + +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end + +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end + +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +end + +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +end + +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +end + +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +end + +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end + +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end + +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end + +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end + +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end + +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end + +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end + +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end + +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end + +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end + +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +end + +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +end + +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end + +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +end + +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +end + +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +end + +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +end + +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +end + +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +end + +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +end + +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end + +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +end + +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +end + +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +end + +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +end + +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +end + +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 +end + +struct VkRenderPassCreationControlEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disallowMerging::VkBool32 +end + +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 +end + +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +end + +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 +end + +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +end + +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +end + +const VkDirectDriverLoadingFlagsLUNARG = VkFlags + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG +end + +struct VkDirectDriverLoadingListLUNARG + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} +end + +const VkTensorARM_T = Cvoid + +const VkTensorARM = Ptr{VkTensorARM_T} + +const VkTensorViewARM_T = Cvoid + +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 +end + +const VkTensorCreateFlagsARM = VkFlags64 + +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 + +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM +end + +struct VkTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkTensorViewCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat +end + +struct VkTensorMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM +end + +struct VkBindTensorMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkWriteDescriptorSetTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} +end + +struct VkTensorFormatPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 +end + +struct VkPhysicalDeviceTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags +end + +struct VkTensorMemoryBarrierARM + sType::VkStructureType + pNext::Ptr{Cvoid} + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM +end + +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} +end + +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 +end + +struct VkDeviceTensorMemoryRequirementsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkTensorCreateInfoARM} +end + +struct VkTensorCopyARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} +end + +struct VkCopyTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} +end + +struct VkMemoryDedicatedAllocateInfoTensorARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM +end + +struct VkPhysicalDeviceExternalTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBufferTensorDescriptors::VkBool32 +end + +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t +end + +struct VkDescriptorGetTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM +end + +struct VkTensorCaptureDescriptorDataInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensor::VkTensorARM +end + +struct VkTensorViewCaptureDescriptorDataInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorView::VkTensorViewARM +end + +struct VkFrameBoundaryTensorsARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM ) ( VkDevice device , const VkTensorCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorARM * pTensor ) +const PFN_vkCreateTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM ) ( VkDevice device , VkTensorARM tensor , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM ) ( VkDevice device , const VkTensorViewCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkTensorViewARM * pView ) +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM ) ( VkDevice device , VkTensorViewARM tensorView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM ) ( VkDevice device , const VkTensorMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindTensorMemoryInfoARM * pBindInfos ) +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM ) ( VkDevice device , const VkDeviceTensorMemoryRequirementsARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM ) ( VkCommandBuffer commandBuffer , const VkCopyTensorInfoARM * pCopyTensorInfo ) +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalTensorInfoARM * pExternalTensorInfo , VkExternalTensorPropertiesARM * pExternalTensorProperties ) +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM ) ( VkDevice device , const VkTensorViewCaptureDescriptorDataInfoARM * pInfo , void * pData ) +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end + +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) +end + +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) +end + +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) +end + +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end + +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end + +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) +end + +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) +end + +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) +end + +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) +end + +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifier::VkBool32 +end + +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} +end + +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} +end + +struct VkShaderModuleIdentifierEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + identifier::NTuple{32, UInt8} +end + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end + +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +end + +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end + +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end + +const VkOpticalFlowSessionNV_T = Cvoid + +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} + +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + opticalFlow::VkBool32 +end + +struct VkPhysicalDeviceOpticalFlowPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 +end + +struct VkOpticalFlowImageFormatInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkOpticalFlowUsageFlagsNV +end + +struct VkOpticalFlowImageFormatPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat +end + +struct VkOpticalFlowSessionCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV +end + +struct VkOpticalFlowSessionCreatePrivateDataInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} +end + +struct VkOpticalFlowExecuteInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end + +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end + +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +end + +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +end + +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) +end + +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) +end + +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) +end + +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) +end + +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyDithering::VkBool32 +end + +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures + +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 +end + +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 +end + +struct VkPhysicalDeviceAntiLagFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + antiLag::VkBool32 +end + +struct VkAntiLagPresentationInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkAntiLagStageAMD + frameIndex::UInt64 +end + +struct VkAntiLagDataAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} +end + +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD ) ( VkDevice device , const VkAntiLagDataAMD * pData ) +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} + +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) +end + +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) +end + +const VkShaderEXT_T = Cvoid + +const VkShaderEXT = Ptr{VkShaderEXT_T} + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderObject::VkBool32 +end + +struct VkPhysicalDeviceShaderObjectPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 +end + +struct VkShaderCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo + +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT ) ( VkDevice device , uint32_t createInfoCount , const VkShaderCreateInfoEXT * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkShaderEXT * pShaders ) +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT ) ( VkDevice device , VkShaderEXT shader , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT ) ( VkDevice device , VkShaderEXT shader , size_t * pDataSize , void * pData ) +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT ) ( VkCommandBuffer commandBuffer , uint32_t stageCount , const VkShaderStageFlagBits * pStages , const VkShaderEXT * pShaders ) +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT ) ( VkCommandBuffer commandBuffer , VkDepthClampModeEXT depthClampMode , const VkDepthClampRangeEXT * pDepthClampRange ) +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) +end + +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end + +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end + +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) +end + +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileProperties::VkBool32 +end + +struct VkTilePropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} + +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) +end + +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) +end + +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +end + +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +end + +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + amigoProfiling::VkBool32 +end + +struct VkAmigoProfilingSubmitInfoSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 +end + +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + multiviewPerViewViewports::VkBool32 +end + +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV +end + +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingInvocationReorder::VkBool32 +end + +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 +end + +struct VkPhysicalDeviceCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 +end + +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 +end + +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 +end + +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) +end + +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeVectorPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV ) ( VkDevice device , const VkConvertCooperativeVectorMatrixInfoNV * pInfo ) +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkConvertCooperativeVectorMatrixInfoNV * pInfos ) +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) +end + +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) +end + +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) +end + +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) +end + +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedSparseAddressSpace::VkBool32 +end + +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags +end + +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyVertexAttributes::VkBool32 +end + +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nativeUnalignedPerformance::VkBool32 +end + +@cenum VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} +end + +struct VkLayerSettingsCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} +end + +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreBuiltins::VkBool32 +end + +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 +end + +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 +end + +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 +end + +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 +end + +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 +end + +struct VkLatencySleepInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + signalSemaphore::VkSemaphore + value::UInt64 +end + +struct VkSetLatencyMarkerInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 + marker::VkLatencyMarkerNV +end + +struct VkLatencyTimingsFrameReportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 +end + +struct VkGetLatencyMarkerInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} +end + +struct VkLatencySubmissionPresentIdNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 +end + +struct VkSwapchainLatencyCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + latencyModeEnable::VkBool32 +end + +struct VkOutOfBandQueueTypeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + queueType::VkOutOfBandQueueTypeNV +end + +struct VkLatencySurfaceCapabilitiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepModeInfoNV * pSleepModeInfo ) +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkLatencySleepInfoNV * pSleepInfo ) +const PFN_vkLatencySleepNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV ) ( VkDevice device , VkSwapchainKHR swapchain , const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV ) ( VkDevice device , VkSwapchainKHR swapchain , VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV ) ( VkQueue queue , const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo ) +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} + +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end + +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) +end + +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end + +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) +end + +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) +end + +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) +end + +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) +end + +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) +end + +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) +end + +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) +end + +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 +end + +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 +end + +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 +end + +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} +end + +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 +end + +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} +end + +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} +end + +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} +end + +struct VkDataGraphPipelineSessionCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline +end + +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM +end + +struct VkDataGraphPipelineSessionBindPointRequirementARM + sType::VkStructureType + pNext::Ptr{Cvoid} + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 +end + +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 +end + +struct VkBindDataGraphPipelineSessionMemoryInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkDataGraphPipelineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraphPipeline::VkPipeline +end + +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkDataGraphPipelineIdentifierCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} +end + +struct VkDataGraphPipelineDispatchInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineDispatchFlagsARM +end + +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 +end + +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end + +struct VkQueueFamilyDataGraphPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM +end + +struct VkDataGraphProcessingEngineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} +end + +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM +end + +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkDataGraphPipelineCreateInfoARM * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM ) ( VkDevice device , const VkDataGraphPipelineSessionCreateInfoARM * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDataGraphPipelineSessionARM * pSession ) +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionBindPointRequirementsInfoARM * pInfo , uint32_t * pBindPointRequirementCount , VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM ) ( VkDevice device , const VkDataGraphPipelineSessionMemoryRequirementsInfoARM * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM ) ( VkDevice device , uint32_t bindInfoCount , const VkBindDataGraphPipelineSessionMemoryInfoARM * pBindInfos ) +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM ) ( VkDevice device , VkDataGraphPipelineSessionARM session , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM ) ( VkCommandBuffer commandBuffer , VkDataGraphPipelineSessionARM session , const VkDataGraphPipelineDispatchInfoARM * pInfo ) +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t * pPropertiesCount , VkDataGraphPipelinePropertyARM * pProperties ) +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM ) ( VkDevice device , const VkDataGraphPipelineInfoARM * pPipelineInfo , uint32_t propertiesCount , VkDataGraphPipelinePropertyQueryResultARM * pProperties ) +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pQueueFamilyDataGraphPropertyCount , VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM * pQueueFamilyDataGraphProcessingEngineInfo , VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) +end + +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) +end + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end + +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + multiviewPerViewRenderAreas::VkBool32 +end + +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} +end + +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 +end + +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 +end + +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + textureBlockMatch2::VkBool32 +end + +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + maxBlockMatchWindow::VkExtent2D +end + +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM +end + +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 +end + +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + selectableCubicWeights::VkBool32 +end + +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM +end + +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM +end + +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrDegamma::VkBool32 +end + +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 +end + +struct VkPhysicalDeviceCubicClampFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicRangeClamp::VkBool32 +end + +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentFeedbackLoopDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT ) ( VkCommandBuffer commandBuffer , VkImageAspectFlags aspectMask ) +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} + +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end + +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end + +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 +end + +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT + sType::VkStructureType + pNext::Ptr{Cvoid} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT +end + +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPoolOverallocation::VkBool32 +end + +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + tileMemoryHeap::VkBool32 +end + +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 +end + +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize +end + +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +struct VkTileMemorySizeInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM ) ( VkCommandBuffer commandBuffer , const VkTileMemoryBindInfoQCOM * pTileMemoryBindInfo ) +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} + +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) +end + +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) +end + +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkDisplaySurfaceStereoCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stereoType::VkDisplaySurfaceStereoTypeNV +end + +struct VkDisplayModeStereoPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + hdmi3DSupported::VkBool32 +end + +struct VkPhysicalDeviceRawAccessChainsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRawAccessChains::VkBool32 +end + +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + reservedExternalQueues::UInt32 +end + +struct VkExternalComputeQueueCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredQueue::VkQueue +end + +struct VkExternalComputeQueueDataParamsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndex::UInt32 +end + +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + externalDataSize::UInt32 + maxExternalQueues::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV ) ( VkDevice device , const VkExternalComputeQueueCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkExternalComputeQueueNV * pExternalQueue ) +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV ) ( VkDevice device , VkExternalComputeQueueNV externalQueue , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV ) ( VkExternalComputeQueueNV externalQueue , VkExternalComputeQueueDataParamsNV * params , void * pData ) +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end + +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) +end + +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) +end + +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) +end + +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end + +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + commandBufferInheritance::VkBool32 +end + +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16VectorAtomics::VkBool32 +end + +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderReplicatedComposites::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 +end + +struct VkPhysicalDeviceRayTracingValidationFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingValidation::VkBool32 +end + +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + clusterAccelerationStructure::VkBool32 +end + +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 +end + +struct VkClusterAccelerationStructureClustersBottomLevelInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 +end + +struct VkClusterAccelerationStructureTriangleClusterInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 +end + +struct VkClusterAccelerationStructureMoveObjectsInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize +end + +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] +end + +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] +end + +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize +end + +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] +end + +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize +end + +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] +end + +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress +end + +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress +end + +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] +end + +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] +end + +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] +end + +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress +end + +struct VkAccelerationStructureBuildSizesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize +end + +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + allowClusterAccelerationStructure::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV ) ( VkDevice device , const VkClusterAccelerationStructureInputInfoNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV ) ( VkCommandBuffer commandBuffer , const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos ) +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end + +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) +end + +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + partitionedAccelerationStructure::VkBool32 +end + +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPartitionCount::UInt32 +end + +struct VkPartitionedAccelerationStructureFlagsNV + sType::VkStructureType + pNext::Ptr{Cvoid} + enablePartitionTranslation::VkBool32 +end + +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV +end + +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress +end + +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress +end + +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} +end + +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} +end + +struct VkPartitionedAccelerationStructureInstancesInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 +end + +struct VkBuildPartitionedAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress +end + +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV ) ( VkDevice device , const VkPartitionedAccelerationStructureInstancesInputNV * pInfo , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV ) ( VkCommandBuffer commandBuffer , const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo ) +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} + +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end + +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) +end + +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) +end + +const VkIndirectExecutionSetEXT_T = Cvoid + +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} + +const VkIndirectCommandsLayoutEXT_T = Cvoid + +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} + +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkIndirectCommandsInputModeFlagsEXT = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 +end + +struct VkGeneratedCommandsMemoryRequirementsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 +end + +struct VkIndirectExecutionSetPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + initialPipeline::VkPipeline + maxPipelineCount::UInt32 +end + +struct VkIndirectExecutionSetShaderLayoutInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkIndirectExecutionSetShaderInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} + +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] +end + +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] +end + +struct VkGeneratedCommandsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 +end + +struct VkWriteIndirectExecutionSetPipelineEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + pipeline::VkPipeline +end + +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange +end + +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 +end + +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT +end + +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags +end + +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] +end + +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] +end + +struct VkIndirectCommandsLayoutCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} +end + +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 +end + +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkGeneratedCommandsPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkGeneratedCommandsShaderInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} +end + +struct VkWriteIndirectExecutionSetShaderEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + index::UInt32 + shader::VkShaderEXT +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo , VkCommandBuffer stateCommandBuffer ) +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT ) ( VkDevice device , VkIndirectCommandsLayoutEXT indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT ) ( VkDevice device , const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectExecutionSetEXT * pIndirectExecutionSet ) +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT ) ( VkDevice device , VkIndirectExecutionSetEXT indirectExecutionSet , uint32_t executionSetWriteCount , const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) +end + +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) +end + +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) +end + +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) +end + +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end + +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) +end + +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end + +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end + +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end + +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end + +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + imageAlignmentControl::VkBool32 +end + +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedImageAlignmentMask::UInt32 +end + +struct VkImageAlignmentControlCreateInfoMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + maximumRequestedAlignment::UInt32 +end + +struct VkPhysicalDeviceDepthClampControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampControl::VkBool32 +end + +struct VkPipelineViewportDepthClampControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} +end + +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + hdrVivid::VkBool32 +end + +struct VkHdrVividDynamicMetadataHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} +end + +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 +end + +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineOpacityMicromap::VkBool32 +end + +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeRobustness::VkBool32 +end + +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapLayered::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 +end + +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 +end + +struct VkSetPresentConfigNV + sType::VkStructureType + pNext::Ptr{Cvoid} + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 +end + +struct VkPhysicalDevicePresentMeteringFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMetering::VkBool32 +end + +struct VkRenderingEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT ) ( VkCommandBuffer commandBuffer , const VkRenderingEndInfoEXT * pRenderingEndInfo ) +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end + +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + zeroInitializeDeviceMemory::VkBool32 +end + +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 +end + +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 +end + +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureCreateFlagsKHR = VkFlags + +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end + +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end + +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end + +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] +end + +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] +end + +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] +end + +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] +end + +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress +end + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 +end + +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end + +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end + +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end + +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] +end + +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = 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_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = 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_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, 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 vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, 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 vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, 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 vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, 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 vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, 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 vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, 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 vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, 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 vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) +end + +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) +end + +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) +end + +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) +end + +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) +end + +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) +end + +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, 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 vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, 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 vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, 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 vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) +end + +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 +end + +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} +end + +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 +end + +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 + +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 +end + +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 +end + +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} + +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 vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, 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 vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) +end + +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) +end + +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) +end + +struct VkPhysicalDeviceRayQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayQuery::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 +end + +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +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 vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fptr) + ccall(fptr, 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 vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fptr) + ccall(fptr, 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 vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fptr) + ccall(fptr, 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 vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fptr) + ccall(fptr, 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_USE_64_BIT_PTR_DEFINES = 1 + +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) + +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) + +const VK_HEADER_VERSION = 321 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = Cuint(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 = Cuint(1) + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = Cuint(32) + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) + +const VK_UUID_SIZE = Cuint(16) + +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) + +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) + +const VK_MAX_MEMORY_HEAPS = Cuint(16) + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) + +const VK_LUID_SIZE = Cuint(8) + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) + +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) + +const VK_VERSION_1_3 = 1 + +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) + +const VK_VERSION_1_4 = 1 + +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) + +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) + +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_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 + +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 = 8 + +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" + +const VK_KHR_video_encode_h264 = 1 + +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 + +const vulkan_video_codec_h264std = 1 + +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 + +const vulkan_video_codecs_common = 1 + +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 + +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 + +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 + +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 + +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 + +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 + +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 + +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff + +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 + +const vulkan_video_codec_h264std_encode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" + +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 + +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" + +const VK_KHR_video_encode_h265 = 1 + +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 + +const vulkan_video_codec_h265std = 1 + +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 + +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 + +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 + +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 + +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 + +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 + +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 + +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 + +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 + +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 + +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 + +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 + +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 + +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 + +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 + +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 + +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 + +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 + +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 + +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 + +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 + +const STD_VIDEO_H265_MAX_DELTA_POC = 48 + +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff + +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 + +const vulkan_video_codec_h265std_encode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" + +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 + +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" + +const VK_KHR_video_decode_h264 = 1 + +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 + +const vulkan_video_codec_h264std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" + +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 + +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 + +const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" + +const VK_KHR_dynamic_rendering = 1 + +const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 + +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" + +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_MAINTENANCE_1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME + +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_MAINTENANCE_2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME + +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_shader_bfloat16 = 1 + +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 + +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" + +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_MAINTENANCE_3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME + +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_video_decode_h265 = 1 + +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 + +const vulkan_video_codec_h265std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" + +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 + +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 + +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" + +const VK_KHR_global_priority = 1 + +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 + +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" + +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE + +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 = 2 + +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" + +const VK_KHR_dynamic_rendering_local_read = 1 + +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 + +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" + +const VK_KHR_shader_quad_control = 1 + +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 + +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" + +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_present_wait = 1 + +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 + +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" + +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_map_memory2 = 1 + +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" + +const VK_KHR_shader_integer_dot_product = 1 + +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 + +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" + +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_present_id = 1 + +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 + +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" + +const VK_KHR_video_encode_queue = 1 + +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 + +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" + +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_fragment_shader_barycentric = 1 + +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" + +const VK_KHR_shader_subgroup_uniform_control_flow = 1 + +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" + +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_KHR_format_feature_flags2 = 1 + +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 + +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" + +const VK_KHR_ray_tracing_maintenance1 = 1 + +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 + +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" + +const VK_KHR_portability_enumeration = 1 + +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 + +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" + +const VK_KHR_maintenance4 = 1 + +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" + +const VK_KHR_shader_subgroup_rotate = 1 + +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 + +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" + +const VK_KHR_shader_maximal_reconvergence = 1 + +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 + +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" + +const VK_KHR_maintenance5 = 1 + +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" + +const VK_KHR_present_id2 = 1 + +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 + +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" + +const VK_KHR_present_wait2 = 1 + +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 + +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" + +const VK_KHR_ray_tracing_position_fetch = 1 + +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 + +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" + +const VK_KHR_pipeline_binary = 1 + +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) + +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" + +const VK_KHR_surface_maintenance1 = 1 + +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" + +const VK_KHR_swapchain_maintenance1 = 1 + +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" + +const VK_KHR_cooperative_matrix = 1 + +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 + +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" + +const VK_KHR_compute_shader_derivatives = 1 + +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" + +const VK_KHR_video_decode_av1 = 1 + +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 + +const vulkan_video_codec_av1std = 1 + +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 + +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 + +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 + +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 + +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 + +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 + +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 + +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 + +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 + +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 + +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 + +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 + +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 + +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 + +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 + +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 + +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 + +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 + +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 + +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 + +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 + +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 + +const vulkan_video_codec_av1std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" + +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) + +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 + +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" + +const VK_KHR_video_encode_av1 = 1 + +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 + +const vulkan_video_codec_av1std_encode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" + +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 + +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" + +const VK_KHR_video_decode_vp9 = 1 + +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 + +const vulkan_video_codec_vp9std = 1 + +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 + +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 + +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 + +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 + +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 + +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 + +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 + +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 + +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 + +const vulkan_video_codec_vp9std_decode = 1 + +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 + +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" + +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) + +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 + +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" + +const VK_KHR_video_maintenance1 = 1 + +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 + +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" + +const VK_KHR_vertex_attribute_divisor = 1 + +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 + +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" + +const VK_KHR_load_store_op_none = 1 + +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 + +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" + +const VK_KHR_unified_image_layouts = 1 + +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" + +const VK_KHR_shader_float_controls2 = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" + +const VK_KHR_index_type_uint8 = 1 + +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" + +const VK_KHR_line_rasterization = 1 + +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" + +const VK_KHR_calibrated_timestamps = 1 + +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" + +const VK_KHR_shader_expect_assume = 1 + +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 + +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" + +const VK_KHR_maintenance6 = 1 + +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" + +const VK_KHR_video_encode_intra_refresh = 1 + +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 + +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" + +const VK_KHR_video_encode_quantization_map = 1 + +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 + +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" + +const VK_KHR_shader_relaxed_extended_instruction = 1 + +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 + +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" + +const VK_KHR_maintenance7 = 1 + +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" + +const VK_KHR_maintenance8 = 1 + +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" + +const VK_KHR_maintenance9 = 1 + +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" + +const VK_KHR_video_maintenance2 = 1 + +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 + +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" + +const VK_KHR_depth_clamp_zero_one = 1 + +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" + +const VK_KHR_robustness2 = 1 + +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" + +const VK_KHR_present_mode_fifo_latest_ready = 1 + +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" + +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_binary_import = 1 + +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 + +const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 + +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 = 3 + +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_pipeline_robustness = 1 + +const VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_pipeline_robustness" + +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_ARRAY_2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME + +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 = 2 + +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 = 5 + +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 = 3 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + +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(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 = 2 + +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 = 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 = 2 + +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 = 2 + +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_FUNCTIONALITY_1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME + +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 = 6 + +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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + +const VK_EXT_shader_atomic_float2 = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME = "VK_EXT_shader_atomic_float2" + +const VK_EXT_surface_maintenance1 = 1 + +const VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 + +const VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_EXT_surface_maintenance1" + +const VK_EXT_swapchain_maintenance1 = 1 + +const VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 + +const VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_EXT_swapchain_maintenance1" + +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 = 5 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + +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_acquire_drm_display = 1 + +const VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_drm_display" + +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_NV_present_barrier = 1 + +const VK_NV_PRESENT_BARRIER_SPEC_VERSION = 1 + +const VK_NV_PRESENT_BARRIER_EXTENSION_NAME = "VK_NV_present_barrier" + +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 = 2 + +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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + +const VK_EXT_descriptor_buffer = 1 + +const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME = "VK_EXT_descriptor_buffer" + +const VK_EXT_graphics_pipeline_library = 1 + +const VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION = 1 + +const VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_EXT_graphics_pipeline_library" + +const VK_AMD_shader_early_and_late_fragment_tests = 1 + +const VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME = "VK_AMD_shader_early_and_late_fragment_tests" + +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_NV_ray_tracing_motion_blur = 1 + +const VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME = "VK_NV_ray_tracing_motion_blur" + +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 = 2 + +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_image_compression_control = 1 + +const VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME = "VK_EXT_image_compression_control" + +const VK_EXT_attachment_feedback_loop_layout = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION = 2 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_layout" + +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_EXT_device_fault = 1 + +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 + +const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" + +const VK_ARM_rasterization_order_attachment_access = 1 + +const VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION = 1 + +const VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME = "VK_ARM_rasterization_order_attachment_access" + +const VK_EXT_rgba10x6_formats = 1 + +const VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME = "VK_EXT_rgba10x6_formats" + +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_physical_device_drm = 1 + +const VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION = 1 + +const VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME = "VK_EXT_physical_device_drm" + +const VK_EXT_device_address_binding_report = 1 + +const VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME = "VK_EXT_device_address_binding_report" + +const VK_EXT_depth_clip_control = 1 + +const VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clip_control" + +const VK_EXT_primitive_topology_list_restart = 1 + +const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 + +const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" + +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + +const VK_HUAWEI_subpass_shading = 1 + +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 + +const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" + +const VK_HUAWEI_invocation_mask = 1 + +const VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION = 1 + +const VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME = "VK_HUAWEI_invocation_mask" + +const VK_NV_external_memory_rdma = 1 + +const VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME = "VK_NV_external_memory_rdma" + +const VK_EXT_pipeline_properties = 1 + +const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" + +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + +const VK_EXT_multisampled_render_to_single_sampled = 1 + +const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 + +const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME = "VK_EXT_multisampled_render_to_single_sampled" + +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_EXT_primitives_generated_query = 1 + +const VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION = 1 + +const VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME = "VK_EXT_primitives_generated_query" + +const VK_EXT_global_priority_query = 1 + +const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 + +const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" + +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE + +const VK_EXT_image_view_min_lod = 1 + +const VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME = "VK_EXT_image_view_min_lod" + +const VK_EXT_multi_draw = 1 + +const VK_EXT_MULTI_DRAW_SPEC_VERSION = 1 + +const VK_EXT_MULTI_DRAW_EXTENSION_NAME = "VK_EXT_multi_draw" + +const VK_EXT_image_2d_view_of_3d = 1 + +const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" + +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + +const VK_EXT_opacity_micromap = 1 + +const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 + +const VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME = "VK_EXT_opacity_micromap" + +const VK_EXT_load_store_op_none = 1 + +const VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 + +const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" + +const VK_HUAWEI_cluster_culling_shader = 1 + +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 + +const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" + +const VK_EXT_border_color_swizzle = 1 + +const VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION = 1 + +const VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME = "VK_EXT_border_color_swizzle" + +const VK_EXT_pageable_device_local_memory = 1 + +const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" + +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + +const VK_VALVE_descriptor_set_host_mapping = 1 + +const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 + +const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME = "VK_VALVE_descriptor_set_host_mapping" + +const VK_EXT_depth_clamp_zero_one = 1 + +const VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_EXT_depth_clamp_zero_one" + +const VK_EXT_non_seamless_cube_map = 1 + +const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 + +const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" + +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + +const VK_QCOM_fragment_density_map_offset = 1 + +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 + +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" + +const VK_NV_copy_memory_indirect = 1 + +const VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION = 1 + +const VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME = "VK_NV_copy_memory_indirect" + +const VK_NV_memory_decompression = 1 + +const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 + +const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" + +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + +const VK_NV_linear_color_attachment = 1 + +const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 + +const VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME = "VK_NV_linear_color_attachment" + +const VK_GOOGLE_surfaceless_query = 1 + +const VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION = 2 + +const VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME = "VK_GOOGLE_surfaceless_query" + +const VK_EXT_image_compression_control_swapchain = 1 + +const VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME = "VK_EXT_image_compression_control_swapchain" + +const VK_QCOM_image_processing = 1 + +const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" + +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + +const VK_EXT_extended_dynamic_state3 = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME = "VK_EXT_extended_dynamic_state3" + +const VK_EXT_subpass_merge_feedback = 1 + +const VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION = 2 + +const VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME = "VK_EXT_subpass_merge_feedback" + +const VK_LUNARG_direct_driver_loading = 1 + +const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 + +const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" + +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + +const VK_EXT_shader_module_identifier = 1 + +const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) + +const VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME = "VK_EXT_shader_module_identifier" + +const VK_EXT_rasterization_order_attachment_access = 1 + +const VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION = 1 + +const VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME = "VK_EXT_rasterization_order_attachment_access" + +const VK_NV_optical_flow = 1 + +const VK_NV_OPTICAL_FLOW_SPEC_VERSION = 1 + +const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" + +const VK_EXT_legacy_dithering = 1 + +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 + +const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" + +const VK_EXT_pipeline_protected_access = 1 + +const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" + +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + +const VK_QCOM_tile_properties = 1 + +const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 + +const VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME = "VK_QCOM_tile_properties" + +const VK_SEC_amigo_profiling = 1 + +const VK_SEC_AMIGO_PROFILING_SPEC_VERSION = 1 + +const VK_SEC_AMIGO_PROFILING_EXTENSION_NAME = "VK_SEC_amigo_profiling" + +const VK_QCOM_multiview_per_view_viewports = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_viewports" + +const VK_NV_ray_tracing_invocation_reorder = 1 + +const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" + +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + +const VK_EXT_mutable_descriptor_type = 1 + +const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 + +const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" + +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + +const VK_ARM_shader_core_builtins = 1 + +const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 + +const VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME = "VK_ARM_shader_core_builtins" + +const VK_EXT_pipeline_library_group_handles = 1 + +const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" + +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + +const VK_KHR_acceleration_structure = 1 + +const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13 + +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 VK_EXT_mesh_shader = 1 + +const VK_EXT_MESH_SHADER_SPEC_VERSION = 1 + +const VK_EXT_MESH_SHADER_EXTENSION_NAME = "VK_EXT_mesh_shader" + +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 index d83f8c2..79e6e13 100644 --- a/lib/x86_64-w64-mingw32.jl +++ b/lib/x86_64-w64-mingw32.jl @@ -171,6 +171,7 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_FRAGMENTATION = -1000161000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 VK_PIPELINE_COMPILE_REQUIRED = 1000297000 + VK_ERROR_NOT_PERMITTED = -1000174001 VK_ERROR_SURFACE_LOST_KHR = -1000000000 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 VK_SUBOPTIMAL_KHR = 1000001003 @@ -185,21 +186,26 @@ const VkCommandPool = Ptr{VkCommandPool_T} VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004 VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005 VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_KHR = -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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000 VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000 + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000 + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 VK_ERROR_FRAGMENTATION_EXT = -1000161000 VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_NOT_PERMITTED_KHR = -1000174001 VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000 VK_RESULT_MAX_ENUM = 2147483647 end @@ -420,6 +426,56 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 @@ -470,8 +526,37 @@ end VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000 VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001 VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002 + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004 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_KHR = 1000038000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003 @@ -479,10 +564,6 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005 VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -494,9 +575,6 @@ end VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -511,7 +589,6 @@ end 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 @@ -524,6 +601,7 @@ end 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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009 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 @@ -532,6 +610,7 @@ end 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000 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 @@ -567,6 +646,8 @@ end VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000 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 @@ -632,7 +713,6 @@ end 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_KHR = 1000187000 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001 @@ -640,15 +720,9 @@ end VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004 VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 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_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_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 @@ -656,6 +730,8 @@ end 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 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 @@ -671,14 +747,17 @@ end 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006 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_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000 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 @@ -703,11 +782,7 @@ end 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 @@ -715,16 +790,10 @@ end 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001 + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 - VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 - VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 - VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 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 @@ -738,11 +807,12 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000 + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001 + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002 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 @@ -752,8 +822,26 @@ end VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002 VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004 + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010 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_TILE_SHADING_FEATURES_QCOM = 1000309000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001 + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002 + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003 + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004 + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005 + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000 VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001 VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002 @@ -766,8 +854,6 @@ end VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009 VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010 VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002 @@ -803,8 +889,6 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001 - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 @@ -845,6 +929,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001 VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000 VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001 VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002 @@ -859,6 +945,8 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001 VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000 VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001 VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002 @@ -871,26 +959,44 @@ end VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000 VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003 + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001 + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001 VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000 @@ -899,6 +1005,30 @@ end VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000 VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001 + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001 + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004 + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005 + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007 + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009 + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010 + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011 + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012 + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015 + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019 + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020 + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021 + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022 + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002 @@ -912,19 +1042,249 @@ end VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005 VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000 + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001 + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000 + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001 + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001 + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004 + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007 + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008 + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000 VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000 VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001 + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002 + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001 + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000 + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001 + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002 + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003 + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004 + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005 + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006 + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007 + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004 + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014 + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019 + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000 + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000 + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001 + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002 + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001 + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000 + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000 + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001 + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000 + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001 + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002 + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003 + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000 + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002 + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006 + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007 + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001 + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005 + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003 + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004 + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008 + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011 + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000 + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001 + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001 + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002 + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003 + VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS = 1000587000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000 + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000 + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001 + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001 + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002 + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000 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 @@ -933,7 +1293,6 @@ end VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004 - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -954,6 +1313,9 @@ end 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002 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 @@ -967,6 +1329,7 @@ end 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_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 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 @@ -1006,6 +1369,7 @@ end 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_ATTACHMENT_SAMPLE_COUNT_INFO_NV = 1000044008 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 @@ -1025,11 +1389,18 @@ end 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_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001 + 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_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 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_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 @@ -1044,6 +1415,9 @@ end 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_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = 1000232000 + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = 1000232001 + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = 1000232002 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 @@ -1057,11 +1431,38 @@ end 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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001 + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002 + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005 + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006 + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007 + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008 + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009 + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000 + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001 + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003 + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004 + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 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 @@ -1087,10 +1488,13 @@ end 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_SUBRESOURCE_LAYOUT_2_EXT = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000 VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = 1000361000 VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = 1000269001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000 VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001 @@ -1098,6 +1502,37 @@ end VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001 VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002 VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = 1000416000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001 + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001 + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003 + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004 + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002 + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003 + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005 + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006 + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = 1000528000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = 1000544000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001 + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002 + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003 + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005 + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006 VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 end @@ -1124,6 +1559,7 @@ end VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000 VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000 VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001 @@ -1131,10 +1567,17 @@ end VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003 + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000 + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000 + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000 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_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = 1000232000 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 @@ -1192,7 +1635,15 @@ end VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000 VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000 + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000 + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001 VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000 + VK_OBJECT_TYPE_SHADER_EXT = 1000482000 + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000 + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000 + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000 + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 @@ -1200,12 +1651,14 @@ end end @cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_KHRONOS = 65536 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_MOBILEYE = 65543 VK_VENDOR_ID_MAX_ENUM = 2147483647 end @@ -1463,6 +1916,8 @@ end VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000 + VK_FORMAT_A8_UNORM = 1000470001 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 @@ -1471,7 +1926,22 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_R8_BOOL_ARM = 1000460000 + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000 + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000 + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001 + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002 + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003 + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004 + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005 + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006 + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007 + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008 + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009 + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010 + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012 + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 @@ -1526,6 +1996,9 @@ end 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_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 VK_FORMAT_MAX_ENUM = 2147483647 end @@ -1563,6 +2036,7 @@ end 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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000 @@ -1715,20 +2189,22 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002 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_ENABLE_NV = 1000205000 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_VERTEX_INPUT_EXT = 1000352000 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000 VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000 - VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003 VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005 @@ -1739,6 +2215,7 @@ end VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012 + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015 @@ -1759,6 +2236,9 @@ end VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032 + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000 + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000 + 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 @@ -1774,6 +2254,7 @@ end VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004 + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000 VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 end @@ -1897,7 +2378,9 @@ end VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000 VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001 + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000 VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000 + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000 VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 @@ -1907,7 +2390,9 @@ end VK_ATTACHMENT_LOAD_OP_LOAD = 0 VK_ATTACHMENT_LOAD_OP_CLEAR = 1 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000 VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000 + VK_ATTACHMENT_LOAD_OP_NONE_KHR = 1000400000 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 end @@ -1926,6 +2411,7 @@ end VK_PIPELINE_BIND_POINT_COMPUTE = 1 VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003 + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000 VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 end @@ -1939,15 +2425,19 @@ end @cenum VkIndexType::UInt32 begin VK_INDEX_TYPE_UINT16 = 0 VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_UINT8 = 1000265000 VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_UINT8_KHR = 1000265000 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_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000 + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000 VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 end @@ -1979,11 +2469,13 @@ end VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 262144 VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 VK_ACCESS_NONE_KHR = 0 VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2042,6 +2534,8 @@ const VkImageAspectFlags = VkFlags VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824 + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728 + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 @@ -2077,13 +2571,15 @@ const VkFormatFeatureFlags = VkFlags VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 65536 VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 262144 VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 131072 - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 1048576 + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 32768 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 32768 VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2111,16 +2607,25 @@ const VkSampleCountFlags = VkFlags 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_HOST_TRANSFER_BIT = 4194304 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_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256 + 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_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 524288 VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 262144 VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 1048576 VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 2097152 + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 8388608 + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 33554432 + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 67108864 VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 4194304 VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2136,6 +2641,7 @@ const VkInstanceCreateFlags = VkFlags @cenum VkMemoryHeapFlagBits::UInt32 begin VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 8 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2164,7 +2670,9 @@ const VkMemoryPropertyFlags = VkFlags 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_OPTICAL_FLOW_BIT_NV = 256 + VK_QUEUE_DATA_GRAPH_BIT_ARM = 1024 VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2204,20 +2712,26 @@ const VkDeviceQueueCreateFlags = VkFlags VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 131072 VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 VK_PIPELINE_STAGE_NONE_KHR = 0 VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 end const VkPipelineStageFlags = VkFlags +@cenum VkMemoryMapFlagBits::UInt32 begin + VK_MEMORY_MAP_PLACED_BIT_EXT = 1 + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkMemoryMapFlags = VkFlags @cenum VkSparseMemoryBindFlagBits::UInt32 begin @@ -2273,6 +2787,11 @@ end const VkQueryPipelineStatisticFlags = VkFlags +@cenum VkQueryPoolCreateFlagBits::UInt32 begin + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 1 + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + const VkQueryPoolCreateFlags = VkFlags @cenum VkQueryResultFlagBits::UInt32 begin @@ -2293,6 +2812,7 @@ const VkQueryResultFlags = VkFlags VK_BUFFER_CREATE_PROTECTED_BIT = 8 VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 32 + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 64 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 @@ -2319,11 +2839,14 @@ const VkBufferCreateFlags = VkFlags 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_VIDEO_ENCODE_DST_BIT_KHR = 32768 + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 2097152 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 4194304 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 67108864 VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 8388608 VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 16777216 + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 134217728 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 @@ -2347,6 +2870,7 @@ const VkShaderModuleCreateFlags = VkFlags @cenum VkPipelineCacheCreateFlagBits::UInt32 begin VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1 + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 8 VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2371,8 +2895,8 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 1073741824 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 @@ -2381,6 +2905,8 @@ const VkColorComponentFlags = VkFlags 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 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 @@ -2392,15 +2918,16 @@ const VkColorComponentFlags = VkFlags VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 33554432 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 67108864 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 16777216 - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = 16 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 134217728 + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 1073741824 VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2512,6 +3039,8 @@ const VkSamplerCreateFlags = VkFlags 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_EXT = 4 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 8 + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 16 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4 VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2523,10 +3052,13 @@ 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_PUSH_DESCRIPTOR_BIT = 1 VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 16 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 32 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 128 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 4 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 64 + 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_HOST_ONLY_POOL_BIT_VALVE = 4 VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2546,6 +3078,8 @@ const VkAttachmentDescriptionFlags = VkFlags VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 8 + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 32 + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 64 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 @@ -2563,6 +3097,7 @@ const VkFramebufferCreateFlags = VkFlags @cenum VkRenderPassCreateFlagBits::UInt32 begin VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 4 VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -2573,6 +3108,7 @@ const VkRenderPassCreateFlags = VkFlags 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_TILE_SHADING_APRON_BIT_QCOM = 256 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 16 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 32 VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 64 @@ -2740,22 +3276,22 @@ struct VkPipelineCacheHeaderVersionOne pipelineCacheUUID::NTuple{16, UInt8} end -# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction const PFN_vkAllocationFunction = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction const PFN_vkFreeFunction = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification const PFN_vkInternalAllocationNotification = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification const PFN_vkInternalFreeNotification = Ptr{Cvoid} -# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction const PFN_vkReallocationFunction = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction const PFN_vkVoidFunction = Ptr{Cvoid} struct VkAllocationCallbacks @@ -3706,6 +4242,14 @@ function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearColorValue, private::Bool = false) + (:float32, :int32, :uint32, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearColorValue = Union{NTuple{4, Cfloat}, NTuple{4, Int32}, NTuple{4, UInt32}} function VkClearColorValue(val::__U_VkClearColorValue) @@ -3747,6 +4291,14 @@ function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end +function Base.propertynames(x::VkClearValue, private::Bool = false) + (:color, :depthStencil, if private + fieldnames(typeof(x)) + else + () + end...) +end + const __U_VkClearValue = Union{VkClearColorValue, VkClearDepthStencilValue} function VkClearValue(val::__U_VkClearValue) @@ -3761,9 +4313,42 @@ function VkClearValue(val::__U_VkClearValue) end struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearAttachment}, f::Symbol) + f === :aspectMask && return Ptr{VkImageAspectFlags}(x + 0) + f === :colorAttachment && return Ptr{UInt32}(x + 4) + f === :clearValue && return Ptr{VkClearValue}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearAttachment, f::Symbol) + r = Ref{VkClearAttachment}(x) + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearAttachment}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkClearAttachment, private::Bool = false) + (:aspectMask, :colorAttachment, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClearAttachment(aspectMask::VkImageAspectFlags, colorAttachment::UInt32, clearValue::VkClearValue) + ref = Ref{VkClearAttachment}() + ptr = Base.unsafe_convert(Ptr{VkClearAttachment}, ref) + ptr.aspectMask = aspectMask + ptr.colorAttachment = colorAttachment + ptr.clearValue = clearValue + ref[] end struct VkClearRect @@ -3805,415 +4390,415 @@ struct VkRenderPassBeginInfo pClearValues::Ptr{VkClearValue} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance const PFN_vkCreateInstance = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance const PFN_vkDestroyInstance = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties 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 ) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice const PFN_vkCreateDevice = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice const PFN_vkDestroyDevice = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue const PFN_vkGetDeviceQueue = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit const PFN_vkQueueSubmit = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle const PFN_vkQueueWaitIdle = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle const PFN_vkDeviceWaitIdle = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory const PFN_vkAllocateMemory = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory const PFN_vkFreeMemory = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory const PFN_vkMapMemory = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory const PFN_vkUnmapMemory = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory const PFN_vkBindBufferMemory = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory const PFN_vkBindImageMemory = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements 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 ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse const PFN_vkQueueBindSparse = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence const PFN_vkCreateFence = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence const PFN_vkDestroyFence = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences const PFN_vkResetFences = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus const PFN_vkGetFenceStatus = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences const PFN_vkWaitForFences = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore const PFN_vkCreateSemaphore = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore const PFN_vkDestroySemaphore = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent const PFN_vkCreateEvent = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent const PFN_vkDestroyEvent = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus const PFN_vkGetEventStatus = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent const PFN_vkSetEvent = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent const PFN_vkResetEvent = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool const PFN_vkCreateQueryPool = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool 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 ) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults const PFN_vkGetQueryPoolResults = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer const PFN_vkCreateBuffer = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer const PFN_vkDestroyBuffer = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView const PFN_vkCreateBufferView = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView const PFN_vkDestroyBufferView = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage const PFN_vkCreateImage = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage const PFN_vkDestroyImage = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView const PFN_vkCreateImageView = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView const PFN_vkDestroyImageView = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule const PFN_vkCreateShaderModule = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule const PFN_vkDestroyShaderModule = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache const PFN_vkCreatePipelineCache = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache const PFN_vkDestroyPipelineCache = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData const PFN_vkGetPipelineCacheData = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches 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 ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines 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 ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines const PFN_vkCreateComputePipelines = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline const PFN_vkDestroyPipeline = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout const PFN_vkCreatePipelineLayout = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler const PFN_vkCreateSampler = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler const PFN_vkDestroySampler = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool const PFN_vkCreateDescriptorPool = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool const PFN_vkResetDescriptorPool = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets 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 ) +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer const PFN_vkCreateFramebuffer = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer const PFN_vkDestroyFramebuffer = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass const PFN_vkCreateRenderPass = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass const PFN_vkDestroyRenderPass = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool const PFN_vkCreateCommandPool = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool const PFN_vkDestroyCommandPool = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool const PFN_vkResetCommandPool = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers const PFN_vkFreeCommandBuffers = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer const PFN_vkBeginCommandBuffer = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer const PFN_vkEndCommandBuffer = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer const PFN_vkResetCommandBuffer = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline const PFN_vkCmdBindPipeline = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport const PFN_vkCmdSetViewport = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor const PFN_vkCmdSetScissor = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth const PFN_vkCmdSetLineWidth = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias const PFN_vkCmdSetDepthBias = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed const PFN_vkCmdDrawIndexed = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect const PFN_vkCmdDrawIndirect = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch const PFN_vkCmdDispatch = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage const PFN_vkCmdResolveImage = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent const PFN_vkCmdSetEvent = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery const PFN_vkCmdBeginQuery = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery const PFN_vkCmdEndQuery = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool const PFN_vkCmdResetQueryPool = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants const PFN_vkCmdPushConstants = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass const PFN_vkCmdNextSubpass = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass const PFN_vkCmdEndRenderPass = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands const PFN_vkCmdExecuteCommands = Ptr{Cvoid} function vkCreateInstance(pCreateInfo, pAllocator, pInstance) @@ -5368,6 +5953,7 @@ end @cenum VkDescriptorUpdateTemplateType::UInt32 begin VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1 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 @@ -5382,7 +5968,11 @@ end VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_ROTATE_BIT = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 1024 VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 512 + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 1024 VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -5406,6 +5996,7 @@ const VkPeerMemoryFeatureFlags = VkFlags 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_ZERO_INITIALIZE_BIT_EXT = 8 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 @@ -5432,6 +6023,10 @@ const VkDescriptorUpdateTemplateCreateFlags = VkFlags 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_RDMA_ADDRESS_BIT_NV = 4096 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 16384 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 65536 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 131072 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 262144 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 @@ -6012,88 +6607,88 @@ end const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 const PFN_vkBindBufferMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 const PFN_vkBindImageMemory2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase const PFN_vkCmdDispatchBase = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool const PFN_vkTrimCommandPool = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} function vkEnumerateInstanceVersion(pApiVersion) @@ -6346,6 +6941,8 @@ end VK_DRIVER_ID_MESA_DOZEN = 23 VK_DRIVER_ID_MESA_NVK = 24 VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25 + VK_DRIVER_ID_MESA_HONEYKRISP = 26 + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27 VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 VK_DRIVER_ID_MESA_RADV_KHR = 3 @@ -6375,6 +6972,7 @@ end 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_RANGECLAMP_QCOM = 1000521000 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 @@ -6395,11 +6993,13 @@ end VK_RESOLVE_MODE_AVERAGE_BIT = 2 VK_RESOLVE_MODE_MIN_BIT = 4 VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 16 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_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 16 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -6984,43 +7584,43 @@ struct VkDeviceMemoryOpaqueCaptureAddressInfo 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount 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 ) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 const PFN_vkCreateRenderPass2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool const PFN_vkResetQueryPool = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores const PFN_vkWaitSemaphores = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore const PFN_vkSignalSemaphore = Ptr{Cvoid} -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) @@ -7186,9 +7786,12 @@ const VkSubmitFlags = VkFlags VK_RENDERING_SUSPENDING_BIT = 2 VK_RENDERING_RESUMING_BIT = 4 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 8 + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 16 + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 32 VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 VK_RENDERING_SUSPENDING_BIT_KHR = 2 VK_RENDERING_RESUMING_BIT_KHR = 4 + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 16 VK_RENDERING_FLAG_BITS_MAX_ENUM = 2147483647 end @@ -7593,16 +8196,56 @@ struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures end struct VkRenderingAttachmentInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :imageView && return Ptr{VkImageView}(x + 16) + f === :imageLayout && return Ptr{VkImageLayout}(x + 24) + f === :resolveMode && return Ptr{VkResolveModeFlagBits}(x + 28) + f === :resolveImageView && return Ptr{VkImageView}(x + 32) + f === :resolveImageLayout && return Ptr{VkImageLayout}(x + 40) + f === :loadOp && return Ptr{VkAttachmentLoadOp}(x + 44) + f === :storeOp && return Ptr{VkAttachmentStoreOp}(x + 48) + f === :clearValue && return Ptr{VkClearValue}(x + 52) + return getfield(x, f) +end + +function Base.getproperty(x::VkRenderingAttachmentInfo, f::Symbol) + r = Ref{VkRenderingAttachmentInfo}(x) + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkRenderingAttachmentInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkRenderingAttachmentInfo, private::Bool = false) + (:sType, :pNext, :imageView, :imageLayout, :resolveMode, :resolveImageView, :resolveImageLayout, :loadOp, :storeOp, :clearValue, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkRenderingAttachmentInfo(sType::VkStructureType, pNext::Ptr{Cvoid}, imageView::VkImageView, imageLayout::VkImageLayout, resolveMode::VkResolveModeFlagBits, resolveImageView::VkImageView, resolveImageLayout::VkImageLayout, loadOp::VkAttachmentLoadOp, storeOp::VkAttachmentStoreOp, clearValue::VkClearValue) + ref = Ref{VkRenderingAttachmentInfo}() + ptr = Base.unsafe_convert(Ptr{VkRenderingAttachmentInfo}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.imageView = imageView + ptr.imageLayout = imageLayout + ptr.resolveMode = resolveMode + ptr.resolveImageView = resolveImageView + ptr.resolveImageLayout = resolveImageLayout + ptr.loadOp = loadOp + ptr.storeOp = storeOp + ptr.clearValue = clearValue + ref[] end struct VkRenderingInfo @@ -7729,115 +8372,115 @@ struct VkDeviceImageMemoryRequirements planeAspect::VkImageAspectFlagBits end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolProperties const PFN_vkGetPhysicalDeviceToolProperties = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlot ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlot const PFN_vkCreatePrivateDataSlot = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlot ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlot const PFN_vkDestroyPrivateDataSlot = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateData ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateData const PFN_vkSetPrivateData = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateData ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateData const PFN_vkGetPrivateData = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2 ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2 const PFN_vkCmdSetEvent2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2 ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2 const PFN_vkCmdResetEvent2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2 ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2 const PFN_vkCmdWaitEvents2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2 ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2 const PFN_vkCmdPipelineBarrier2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2 ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2 const PFN_vkCmdWriteTimestamp2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2 ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2 const PFN_vkQueueSubmit2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2 ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2 const PFN_vkCmdCopyBuffer2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2 ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2 const PFN_vkCmdCopyImage2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2 ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2 const PFN_vkCmdCopyBufferToImage2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2 ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2 const PFN_vkCmdCopyImageToBuffer2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2 ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2 const PFN_vkCmdBlitImage2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2 ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2 const PFN_vkCmdResolveImage2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRendering ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRendering const PFN_vkCmdBeginRendering = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering ) ( VkCommandBuffer commandBuffer ) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering const PFN_vkCmdEndRendering = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullMode ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullMode const PFN_vkCmdSetCullMode = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFace ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFace const PFN_vkCmdSetFrontFace = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopology ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopology const PFN_vkCmdSetPrimitiveTopology = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCount ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCount const PFN_vkCmdSetViewportWithCount = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCount ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCount const PFN_vkCmdSetScissorWithCount = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2 ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2 const PFN_vkCmdBindVertexBuffers2 = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnable ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnable const PFN_vkCmdSetDepthTestEnable = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnable ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnable const PFN_vkCmdSetDepthWriteEnable = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOp ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOp const PFN_vkCmdSetDepthCompareOp = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnable ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnable const PFN_vkCmdSetDepthBoundsTestEnable = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnable ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnable const PFN_vkCmdSetStencilTestEnable = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOp ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOp const PFN_vkCmdSetStencilOp = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnable ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnable const PFN_vkCmdSetRasterizerDiscardEnable = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnable ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnable const PFN_vkCmdSetDepthBiasEnable = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnable ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnable const PFN_vkCmdSetPrimitiveRestartEnable = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirements ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirements const PFN_vkGetDeviceBufferMemoryRequirements = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirements ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirements const PFN_vkGetDeviceImageMemoryRequirements = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirements ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirements const PFN_vkGetDeviceImageSparseMemoryRequirements = Ptr{Cvoid} function vkGetPhysicalDeviceToolProperties(physicalDevice, pToolCount, pToolProperties) @@ -8136,2789 +8779,3086 @@ function vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRe ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) 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 +@cenum VkPipelineRobustnessBufferBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 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 +@cenum VkPipelineRobustnessImageBehavior::UInt32 begin + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 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 +@cenum VkQueueGlobalPriority::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024 + 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_LOW_KHR = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 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 +@cenum VkLineRasterizationMode::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3 + 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_DEFAULT_KHR = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 2147483647 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR +@cenum VkMemoryUnmapFlagBits::UInt32 begin + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 1 + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} +const VkMemoryUnmapFlags = VkFlags -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} +const VkPipelineCreateFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} +const VkPipelineCreateFlagBits2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} +const VkBufferUsageFlags2 = VkFlags64 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} +const VkBufferUsageFlagBits2 = VkFlags64 -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +@cenum VkHostImageCopyFlagBits::UInt32 begin + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 1 + VK_HOST_IMAGE_COPY_MEMCPY = 1 + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = 1 + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 1 + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 2147483647 end -function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end +const VkHostImageCopyFlags = VkFlags -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Features + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 + shaderFloatControls2::VkBool32 + shaderExpectAssume::VkBool32 + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 + indexTypeUint8::VkBool32 + dynamicRenderingLocalRead::VkBool32 + maintenance5::VkBool32 + maintenance6::VkBool32 + pipelineProtectedAccess::VkBool32 + pipelineRobustness::VkBool32 + hostImageCopy::VkBool32 + pushDescriptor::VkBool32 end -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +struct VkPhysicalDeviceVulkan14Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 + maxPushDescriptors::UInt32 + dynamicRenderingLocalReadDepthStencilAttachments::VkBool32 + dynamicRenderingLocalReadMultisampledAttachments::VkBool32 + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkDeviceQueueGlobalPriorityCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriority end -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +struct VkPhysicalDeviceGlobalPriorityQueryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriorityQuery::VkBool32 end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkQueueFamilyGlobalPriorityProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + priorityCount::UInt32 + priorities::NTuple{16, VkQueueGlobalPriority} end -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +struct VkPhysicalDeviceShaderSubgroupRotateFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupRotate::VkBool32 + shaderSubgroupRotateClustered::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderFloatControls2Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloatControls2::VkBool32 end -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +struct VkPhysicalDeviceShaderExpectAssumeFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderExpectAssume::VkBool32 end -const VkSwapchainKHR_T = Cvoid - -const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} +struct VkPhysicalDeviceLineRasterizationFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end -@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_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkPhysicalDeviceLineRasterizationProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 end -const VkSwapchainCreateFlagsKHR = VkFlags +struct VkPipelineRasterizationLineStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationMode + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end -@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 +struct VkPhysicalDeviceVertexAttributeDivisorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 + supportsNonZeroFirstInstance::VkBool32 end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +struct VkVertexInputBindingDivisorDescription + binding::UInt32 + divisor::UInt32 +end -struct VkSwapchainCreateInfoKHR +struct VkPipelineVertexInputDivisorStateCreateInfo 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 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescription} end -struct VkPresentInfoKHR +struct VkPhysicalDeviceVertexAttributeDivisorFeatures sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPhysicalDeviceIndexTypeUint8Features sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + indexTypeUint8::VkBool32 end -struct VkBindImageMemorySwapchainInfoKHR +struct VkMemoryMapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 + flags::VkMemoryMapFlags + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize end -struct VkAcquireNextImageInfoKHR +struct VkMemoryUnmapInfo sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + flags::VkMemoryUnmapFlags + memory::VkDeviceMemory end -struct VkDeviceGroupPresentCapabilitiesKHR +struct VkPhysicalDeviceMaintenance5Features sType::VkStructureType pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR + maintenance5::VkBool32 end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceMaintenance5Properties sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + earlyFragmentMultisampleCoverageAfterSampleCounting::VkBool32 + earlyFragmentSampleMaskTestBeforeSampleCounting::VkBool32 + depthStencilSwizzleOneSupport::VkBool32 + polygonModePointSize::VkBool32 + nonStrictSinglePixelWideLinesUseParallelogram::VkBool32 + nonStrictWideLinesUseParallelogram::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkRenderingAreaInfo sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + viewMask::UInt32 + colorAttachmentCount::UInt32 + pColorAttachmentFormats::Ptr{VkFormat} + depthAttachmentFormat::VkFormat + stencilAttachmentFormat::VkFormat 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} +struct VkImageSubresource2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSubresource::VkImageSubresource +end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) - ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkDeviceImageSubresourceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pCreateInfo::Ptr{VkImageCreateInfo} + pSubresource::Ptr{VkImageSubresource2} end -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +struct VkSubresourceLayout2 + sType::VkStructureType + pNext::Ptr{Cvoid} + subresourceLayout::VkSubresourceLayout end -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkPipelineCreateFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2 end -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +struct VkBufferUsageFlags2CreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkBufferUsageFlags2 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDevicePushDescriptorProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 end -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingLocalRead::VkBool32 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) +struct VkRenderingAttachmentLocationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentLocations::Ptr{UInt32} end -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +struct VkRenderingInputAttachmentIndexInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentInputIndices::Ptr{UInt32} + pDepthInputAttachmentIndex::Ptr{UInt32} + pStencilInputAttachmentIndex::Ptr{UInt32} end -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Features + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance6::VkBool32 end -function vkQueuePresentKHR(queue, pPresentInfo, fptr) - ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +struct VkPhysicalDeviceMaintenance6Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + blockTexelViewCompatibleMultipleLayers::VkBool32 + maxCombinedImageSamplerDescriptorCount::UInt32 + fragmentShadingRateClampCombinerInputs::VkBool32 end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindMemoryStatus + sType::VkStructureType + pNext::Ptr{Cvoid} + pResult::Ptr{VkResult} end -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +struct VkBindDescriptorSetsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + descriptorSetCount::UInt32 + pDescriptorSets::Ptr{VkDescriptorSet} + dynamicOffsetCount::UInt32 + pDynamicOffsets::Ptr{UInt32} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushConstantsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + layout::VkPipelineLayout + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 + pValues::Ptr{Cvoid} end -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +struct VkPushDescriptorSetInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 + descriptorWriteCount::UInt32 + pDescriptorWrites::Ptr{VkWriteDescriptorSet} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPushDescriptorSetWithTemplateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorUpdateTemplate::VkDescriptorUpdateTemplate + layout::VkPipelineLayout + set::UInt32 + pData::Ptr{Cvoid} end -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +struct VkPhysicalDevicePipelineProtectedAccessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineProtectedAccess::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineRobustness::VkBool32 end -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +struct VkPhysicalDevicePipelineRobustnessProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehavior + defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehavior + defaultRobustnessImages::VkPipelineRobustnessImageBehavior end -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} - -const VkDisplayModeCreateFlagsKHR = VkFlags +struct VkPipelineRobustnessCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffers::VkPipelineRobustnessBufferBehavior + uniformBuffers::VkPipelineRobustnessBufferBehavior + vertexInputs::VkPipelineRobustnessBufferBehavior + images::VkPipelineRobustnessImageBehavior +end -@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 +struct VkPhysicalDeviceHostImageCopyFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostImageCopy::VkBool32 end -const VkDisplayPlaneAlphaFlagsKHR = VkFlags +struct VkPhysicalDeviceHostImageCopyProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + copySrcLayoutCount::UInt32 + pCopySrcLayouts::Ptr{VkImageLayout} + copyDstLayoutCount::UInt32 + pCopyDstLayouts::Ptr{VkImageLayout} + optimalTilingLayoutUUID::NTuple{16, UInt8} + identicalMemoryTypeRequirements::VkBool32 +end -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +struct VkMemoryToImageCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +struct VkImageToMemoryCopy + sType::VkStructureType + pNext::Ptr{Cvoid} + pHostPointer::Ptr{Cvoid} + memoryRowLength::UInt32 + memoryImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D end -struct VkDisplayModeCreateInfoKHR +struct VkCopyMemoryToImageInfo sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR + flags::VkHostImageCopyFlags + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkMemoryToImageCopy} end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +struct VkCopyImageToMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageToMemoryCopy} end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +struct VkCopyImageToImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHostImageCopyFlags + srcImage::VkImage + srcImageLayout::VkImageLayout + dstImage::VkImage + dstImageLayout::VkImageLayout + regionCount::UInt32 + pRegions::Ptr{VkImageCopy2} end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +struct VkHostImageLayoutTransitionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + oldLayout::VkImageLayout + newLayout::VkImageLayout + subresourceRange::VkImageSubresourceRange end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +struct VkSubresourceHostMemcpySize + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize end -struct VkDisplaySurfaceCreateInfoKHR +struct VkHostImageCopyDevicePerformanceQuery sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D + optimalDeviceAccess::VkBool32 + identicalMemoryLayout::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStipple +const PFN_vkCmdSetLineStipple = 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_vkMapMemory2 +const PFN_vkMapMemory2 = 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_vkUnmapMemory2 +const PFN_vkUnmapMemory2 = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2 +const PFN_vkCmdBindIndexBuffer2 = 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 void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularity +const PFN_vkGetRenderingAreaGranularity = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayout +const PFN_vkGetDeviceImageSubresourceLayout = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2 +const PFN_vkGetImageSubresourceLayout2 = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet +const PFN_vkCmdPushDescriptorSet = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate +const PFN_vkCmdPushDescriptorSetWithTemplate = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocations +const PFN_vkCmdSetRenderingAttachmentLocations = Ptr{Cvoid} -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndices +const PFN_vkCmdSetRenderingInputAttachmentIndices = Ptr{Cvoid} -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2 +const PFN_vkCmdBindDescriptorSets2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2 +const PFN_vkCmdPushConstants2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2 +const PFN_vkCmdPushDescriptorSet2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2 +const PFN_vkCmdPushDescriptorSetWithTemplate2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImage +const PFN_vkCopyMemoryToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemory +const PFN_vkCopyImageToMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImage +const PFN_vkCopyImageToImage = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayout +const PFN_vkTransitionImageLayout = Ptr{Cvoid} + +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStipple, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +function vkCmdSetLineStipple(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) end -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +function vkMapMemory2(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) 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) +function vkUnmapMemory2(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +function vkUnmapMemory2(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +function vkCmdBindIndexBuffer2(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularity, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkGetRenderingAreaGranularity(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) 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 vkGetDeviceImageSubresourceLayout(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +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) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +function vkGetImageSubresourceLayout2(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -const VkVideoSessionKHR_T = Cvoid +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSet, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} +function vkCmdPushDescriptorSet(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end -const VkVideoSessionParametersKHR_T = Cvoid +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplate, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +function vkCmdPushDescriptorSetWithTemplate(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end -@cenum VkQueryResultStatusKHR::Int32 begin - 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 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocations, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) end -@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin - VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdSetRenderingAttachmentLocations(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) end -const VkVideoCodecOperationFlagsKHR = VkFlags +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndices, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end -@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +function vkCmdSetRenderingInputAttachmentIndices(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) end -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end -@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin - 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 +function vkCmdBindDescriptorSets2(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) end -const VkVideoComponentBitDepthFlagsKHR = VkFlags +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end -@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushConstants2(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) end -const VkVideoCapabilityFlagsKHR = VkFlags +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end -@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCmdPushDescriptorSet2(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) end -const VkVideoSessionCreateFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -const VkVideoSessionParametersCreateFlagsKHR = VkFlags +function vkCmdPushDescriptorSetWithTemplate2(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end -const VkVideoBeginCodingFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -const VkVideoEndCodingFlagsKHR = VkFlags +function vkCopyMemoryToImage(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) +end -@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemory, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -const VkVideoCodingControlFlagsKHR = VkFlags +function vkCopyImageToMemory(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) +end -struct VkQueueFamilyQueryResultStatusPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queryResultStatusSupport::VkBool32 +function vkCopyImageToImage(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImage, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -struct VkQueueFamilyVideoPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR +function vkCopyImageToImage(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -struct VkVideoProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR +function vkTransitionImageLayout(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayout, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoProfileListInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileInfoKHR} +function vkTransitionImageLayout(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCapabilityFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - pictureAccessGranularity::VkExtent2D - minCodedExtent::VkExtent2D - maxCodedExtent::VkExtent2D - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - stdHeaderVersion::VkExtensionProperties -end - -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags -end - -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - componentMapping::VkComponentMapping - imageCreateFlags::VkImageCreateFlags - imageType::VkImageType - imageTiling::VkImageTiling - imageUsageFlags::VkImageUsageFlags -end - -struct VkVideoPictureResourceInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VkSurfaceKHR_T = Cvoid -struct VkVideoReferenceSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int32 - pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} -end +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} -struct VkVideoSessionMemoryRequirementsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memoryRequirements::VkMemoryRequirements +@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_FIFO_LATEST_READY_KHR = 1000361000 + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = 1000361000 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkBindVideoSessionMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize +@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 -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileInfoKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePictureFormat::VkFormat - maxDpbSlots::UInt32 - maxActiveReferencePictures::UInt32 - pStdHeaderVersion::Ptr{VkExtensionProperties} +@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 -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoSessionParametersCreateFlagsKHR - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR +@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 -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +const VkCompositeAlphaFlagsKHR = VkFlags -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} -end +const VkSurfaceTransformFlagsKHR = VkFlags -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags end -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , const VkVideoProfileInfoKHR * pVideoProfile , VkVideoCapabilitiesKHR * pCapabilities ) -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo , uint32_t * pVideoFormatPropertyCount , VkVideoFormatPropertiesKHR * pVideoFormatProperties ) -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR ) ( VkDevice device , const VkVideoSessionCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionKHR * pVideoSession ) -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t * pMemoryRequirementsCount , VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR ) ( VkDevice device , VkVideoSessionKHR videoSession , uint32_t bindSessionMemoryInfoCount , const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos ) -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR ) ( VkDevice device , const VkVideoSessionParametersCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkVideoSessionParametersKHR * pVideoSessionParameters ) -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR ) ( VkDevice device , VkVideoSessionParametersKHR videoSessionParameters , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoBeginCodingInfoKHR * pBeginInfo ) -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdEndVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoEndCodingInfoKHR * pEndCodingInfo ) -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR ) ( VkCommandBuffer commandBuffer , const VkVideoCodingControlInfoKHR * pCodingControlInfo ) -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) +function vkDestroySurfaceKHR(instance, surface, pAllocator, fptr) + ccall(fptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainKHR_T = Cvoid -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) +@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_PRESENT_ID_2_BIT_KHR = 64 + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 128 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 8 + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 8 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) -end +const VkSwapchainCreateFlagsKHR = VkFlags -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) +@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 -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) -end +const VkDeviceGroupPresentModeFlagsKHR = VkFlags -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) -end - -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) -end - -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) -end - -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) +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 -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} end -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR end -@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 end -const VkVideoDecodeCapabilityFlagsKHR = VkFlags - -@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 - VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 - VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 - VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 - VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 end -const VkVideoDecodeUsageFlagsKHR = VkFlags - -const VkVideoDecodeFlagsKHR = VkFlags - -struct VkVideoDecodeCapabilitiesKHR +struct VkDeviceGroupPresentCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoDecodeCapabilityFlagsKHR + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR end -struct VkVideoDecodeUsageInfoKHR +struct VkDeviceGroupPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - videoUsageHints::VkVideoDecodeUsageFlagsKHR + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR end -struct VkVideoDecodeInfoKHR +struct VkDeviceGroupSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceInfoKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + modes::VkDeviceGroupPresentModeFlagsKHR end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR ) ( VkCommandBuffer commandBuffer , const VkVideoDecodeInfoKHR * pDecodeInfo ) -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} -function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +# 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 vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) end -@cenum StdVideoH264ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -@cenum StdVideoH264ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 +function vkDestroySwapchainKHR(device, swapchain, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) end -@cenum StdVideoH264LevelIdc::UInt32 begin - STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 - STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 - STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 - STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 - STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 - STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 - STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 - STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 - STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 - STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 - STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 - STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 - STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 - STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 - STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 - STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 - STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 - STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 - STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -@cenum StdVideoH264PocType::UInt32 begin - 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 - STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) end -@cenum StdVideoH264AspectRatioIdc::UInt32 begin - 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 - STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 +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 -@cenum StdVideoH264WeightedBipredIdc::UInt32 begin - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 - STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) end -@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin - 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 - STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -@cenum StdVideoH264MemMgmtControlOp::UInt32 begin - 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 - STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +function vkQueuePresentKHR(queue, pPresentInfo, fptr) + ccall(fptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) end -@cenum StdVideoH264CabacInitIdc::UInt32 begin - 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 - STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin - 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 - STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) end -@cenum StdVideoH264SliceType::UInt32 begin - STD_VIDEO_H264_SLICE_TYPE_P = 0 - STD_VIDEO_H264_SLICE_TYPE_B = 1 - STD_VIDEO_H264_SLICE_TYPE_I = 2 - STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264PictureType::UInt32 begin - STD_VIDEO_H264_PICTURE_TYPE_P = 0 - STD_VIDEO_H264_PICTURE_TYPE_B = 1 - STD_VIDEO_H264_PICTURE_TYPE_I = 2 - STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 - STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) end -@cenum StdVideoH264NonVclNaluType::UInt32 begin - 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 - STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -struct StdVideoH264SpsVuiFlags - data::NTuple{4, UInt8} +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) end -function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) - f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) - return getfield(x, f) +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) - r = Ref{StdVideoH264SpsVuiFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end +const VkDisplayKHR_T = Cvoid -function 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) - ref = Ref{StdVideoH264SpsVuiFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) - ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag - ptr.overscan_info_present_flag = overscan_info_present_flag - ptr.overscan_appropriate_flag = overscan_appropriate_flag - ptr.video_signal_type_present_flag = video_signal_type_present_flag - ptr.video_full_range_flag = video_full_range_flag - ptr.color_description_present_flag = color_description_present_flag - ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag - ptr.timing_info_present_flag = timing_info_present_flag - ptr.fixed_frame_rate_flag = fixed_frame_rate_flag - ptr.bitstream_restriction_flag = bitstream_restriction_flag - ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag - ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag - ref[] -end +const VkDisplayKHR = Ptr{VkDisplayKHR_T} -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - reserved1::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 +const VkDisplayModeKHR_T = Cvoid -struct StdVideoH264SequenceParameterSetVui - flags::StdVideoH264SpsVuiFlags - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - max_num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - reserved1::UInt32 - pHrdParameters::Ptr{StdVideoH264HrdParameters} -end +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} -struct StdVideoH264SpsFlags - data::NTuple{4, UInt8} -end +const VkDisplayModeCreateFlagsKHR = VkFlags -function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) - f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) - return getfield(x, f) +@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 -function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) - r = Ref{StdVideoH264SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end -end +const VkDisplayPlaneAlphaFlagsKHR = VkFlags -function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end -end +const VkDisplaySurfaceCreateFlagsKHR = VkFlags -function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) - ref = Ref{StdVideoH264SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) - ptr.constraint_set0_flag = constraint_set0_flag - ptr.constraint_set1_flag = constraint_set1_flag - ptr.constraint_set2_flag = constraint_set2_flag - ptr.constraint_set3_flag = constraint_set3_flag - ptr.constraint_set4_flag = constraint_set4_flag - ptr.constraint_set5_flag = constraint_set5_flag - ptr.direct_8x8_inference_flag = direct_8x8_inference_flag - ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag - ptr.frame_mbs_only_flag = frame_mbs_only_flag - ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag - ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag - ptr.frame_cropping_flag = frame_cropping_flag - ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ref[] +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 end -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt16 - use_default_scaling_matrix_mask::UInt16 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR end -struct StdVideoH264SequenceParameterSet - flags::StdVideoH264SpsFlags - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264LevelIdc - chroma_format_idc::StdVideoH264ChromaFormatIdc - seq_parameter_set_id::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - reserved1::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 - reserved2::UInt32 - pOffsetForRefFrame::Ptr{Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR end -struct StdVideoH264PpsFlags - data::NTuple{4, UInt8} +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D end -function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) - f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - return getfield(x, f) +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 end -function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) - r = Ref{StdVideoH264PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 end -function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - 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 -function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) - ref = Ref{StdVideoH264PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) - ptr.transform_8x8_mode_flag = transform_8x8_mode_flag - ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag - ptr.entropy_coding_mode_flag = entropy_coding_mode_flag - ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag - ref[] -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} -struct StdVideoH264PictureParameterSet - flags::StdVideoH264PpsFlags - 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 - pScalingLists::Ptr{StdVideoH264ScalingLists} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} -@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 - STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} -struct StdVideoDecodeH264PictureInfoFlags - data::NTuple{4, UInt8} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} -function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) - f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) - f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) - return getfield(x, f) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} -function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +# 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 Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) - ref = Ref{StdVideoDecodeH264PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) - ptr.field_pic_flag = field_pic_flag - ptr.is_intra = is_intra - ptr.IdrPicFlag = IdrPicFlag - ptr.bottom_field_flag = bottom_field_flag - ptr.is_reference = is_reference - ptr.complementary_field_pair = complementary_field_pair - ref[] +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -struct StdVideoDecodeH264PictureInfo - flags::StdVideoDecodeH264PictureInfoFlags - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved1::UInt8 - reserved2::UInt8 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) end -struct StdVideoDecodeH264ReferenceInfoFlags - data::NTuple{4, UInt8} +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) - f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) end -function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) end -function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) - ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) - ptr.top_field_flag = top_field_flag - ptr.bottom_field_flag = bottom_field_flag - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.is_non_existing = is_non_existing - ref[] +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 -struct StdVideoDecodeH264ReferenceInfo - flags::StdVideoDecodeH264ReferenceInfoFlags - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) end -@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) end -const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end -struct VkVideoDecodeH264ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkVideoDecodeH264CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH264LevelIdc - fieldOffsetGranularity::VkOffset2D +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkVideoDecodeH264SessionParametersAddInfoKHR +struct VkDisplayPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH264PictureParameterSet} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 end -struct VkVideoDecodeH264SessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +# 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 -struct VkVideoDecodeH264PictureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - sliceCount::UInt32 - pSliceOffsets::Ptr{UInt32} +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) end -struct VkVideoDecodeH264DpbSlotInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +const VkVideoSessionKHR_T = Cvoid + +const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} + +const VkVideoSessionParametersKHR_T = Cvoid + +const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} + +@cenum VkQueryResultStatusKHR::Int32 begin + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000 + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647 end -const VkRenderingFlagsKHR = VkRenderingFlags +@cenum VkVideoCodecOperationFlagBitsKHR::UInt32 begin + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0 + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 65536 + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 131072 + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 1 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 2 + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 4 + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 262144 + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 8 + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -const VkRenderingFlagBitsKHR = VkRenderingFlagBits +const VkVideoCodecOperationFlagsKHR = VkFlags -const VkRenderingInfoKHR = VkRenderingInfo +@cenum VkVideoChromaSubsamplingFlagBitsKHR::UInt32 begin + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_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 +end -const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo +const VkVideoChromaSubsamplingFlagsKHR = VkFlags -const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo +@cenum VkVideoComponentBitDepthFlagBitsKHR::UInt32 begin + 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 +end -const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures +const VkVideoComponentBitDepthFlagsKHR = VkFlags -const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo +@cenum VkVideoCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2 + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -struct VkRenderingFragmentShadingRateAttachmentInfoKHR +const VkVideoCapabilityFlagsKHR = VkFlags + +@cenum VkVideoSessionCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 2 + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 4 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 8 + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 16 + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 32 + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionCreateFlagsKHR = VkFlags + +@cenum VkVideoSessionParametersCreateFlagBitsKHR::UInt32 begin + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 1 + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoSessionParametersCreateFlagsKHR = VkFlags + +const VkVideoBeginCodingFlagsKHR = VkFlags + +const VkVideoEndCodingFlagsKHR = VkFlags + +@cenum VkVideoCodingControlFlagBitsKHR::UInt32 begin + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1 + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 2 + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 4 + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoCodingControlFlagsKHR = VkFlags + +struct VkQueueFamilyQueryResultStatusPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D + queryResultStatusSupport::VkBool32 end -struct VkRenderingFragmentDensityMapAttachmentInfoEXT +struct VkQueueFamilyVideoPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout + videoCodecOperations::VkVideoCodecOperationFlagsKHR end -struct VkAttachmentSampleCountInfoAMD +struct VkVideoProfileInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits + videoCodecOperation::VkVideoCodecOperationFlagBitsKHR + chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR + lumaBitDepth::VkVideoComponentBitDepthFlagsKHR + chromaBitDepth::VkVideoComponentBitDepthFlagsKHR end -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD +struct VkVideoProfileListInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + profileCount::UInt32 + pProfiles::Ptr{VkVideoProfileInfoKHR} +end -struct VkMultiviewPerViewAttributesInfoNVX +struct VkVideoCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 + flags::VkVideoCapabilityFlagsKHR + minBitstreamBufferOffsetAlignment::VkDeviceSize + minBitstreamBufferSizeAlignment::VkDeviceSize + pictureAccessGranularity::VkExtent2D + minCodedExtent::VkExtent2D + maxCodedExtent::VkExtent2D + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + stdHeaderVersion::VkExtensionProperties end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR ) ( VkCommandBuffer commandBuffer , const VkRenderingInfo * pRenderingInfo ) -const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} +struct VkPhysicalDeviceVideoFormatInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageUsage::VkImageUsageFlags +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} +struct VkVideoFormatPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + componentMapping::VkComponentMapping + imageCreateFlags::VkImageCreateFlags + imageType::VkImageType + imageTiling::VkImageTiling + imageUsageFlags::VkImageUsageFlags +end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) - ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +struct VkVideoPictureResourceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + codedOffset::VkOffset2D + codedExtent::VkExtent2D + baseArrayLayer::UInt32 + imageViewBinding::VkImageView end -function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +struct VkVideoReferenceSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + slotIndex::Int32 + pPictureResource::Ptr{VkVideoPictureResourceInfoKHR} end -function vkCmdEndRenderingKHR(commandBuffer) - ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkVideoSessionMemoryRequirementsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memoryRequirements::VkMemoryRequirements end -function vkCmdEndRenderingKHR(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkBindVideoSessionMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryBindIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + memorySize::VkDeviceSize end -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo +struct VkVideoSessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + flags::VkVideoSessionCreateFlagsKHR + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + pictureFormat::VkFormat + maxCodedExtent::VkExtent2D + referencePictureFormat::VkFormat + maxDpbSlots::UInt32 + maxActiveReferencePictures::UInt32 + pStdHeaderVersion::Ptr{VkExtensionProperties} +end -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures +struct VkVideoSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoSessionParametersCreateFlagsKHR + videoSessionParametersTemplate::VkVideoSessionParametersKHR + videoSession::VkVideoSessionKHR +end -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties +struct VkVideoSessionParametersUpdateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + updateSequenceCount::UInt32 +end -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 +struct VkVideoBeginCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoBeginCodingFlagsKHR + videoSession::VkVideoSessionKHR + videoSessionParameters::VkVideoSessionParametersKHR + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} +end -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 +struct VkVideoEndCodingInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEndCodingFlagsKHR +end -const VkFormatProperties2KHR = VkFormatProperties2 +struct VkVideoCodingControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoCodingControlFlagsKHR +end -const VkImageFormatProperties2KHR = VkImageFormatProperties2 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR +const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR +const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} -const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionKHR +const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionKHR +const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetVideoSessionMemoryRequirementsKHR +const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 +# typedef VkResult ( VKAPI_PTR * PFN_vkBindVideoSessionMemoryKHR +const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateVideoSessionParametersKHR +const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkUpdateVideoSessionParametersKHR +const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyVideoSessionParametersKHR +const PFN_vkDestroyVideoSessionParametersKHR = 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_vkCmdBeginVideoCodingKHR +const PFN_vkCmdBeginVideoCodingKHR = 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_vkCmdEndVideoCodingKHR +const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdControlVideoCodingKHR +const PFN_vkCmdControlVideoCodingKHR = 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) +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) + ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileInfoKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) + ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) + ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) + ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) + ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoSessionMemoryRequirementsKHR}), device, videoSession, pMemoryRequirementsCount, pMemoryRequirements) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) + ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +function vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkBindVideoSessionMemoryInfoKHR}), device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) + ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) end -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) 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) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) + ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) + ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) end -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) 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) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) + ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) end -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) 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) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) + ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) end -function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) 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) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) + ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) end -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) 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) +@cenum VkVideoDecodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 1 + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 2 + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end +const VkVideoDecodeCapabilityFlagsKHR = VkFlags -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +@cenum VkVideoDecodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 2 + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 4 + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo +const VkVideoDecodeUsageFlagsKHR = VkFlags -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +const VkVideoDecodeFlagsKHR = VkFlags -struct VkImportMemoryFdInfoKHR +struct VkVideoDecodeCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + flags::VkVideoDecodeCapabilityFlagsKHR end -struct VkMemoryFdPropertiesKHR +struct VkVideoDecodeUsageInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + videoUsageHints::VkVideoDecodeUsageFlagsKHR end -struct VkMemoryGetFdInfoKHR +struct VkVideoDecodeInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + flags::VkVideoDecodeFlagsKHR + srcBuffer::VkBuffer + srcBufferOffset::VkDeviceSize + srcBufferRange::VkDeviceSize + dstPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDecodeVideoKHR +const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo) + ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pDecodeInfo) end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +@cenum StdVideoH264ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 end -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +@cenum StdVideoH264ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 2147483647 end -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags +@cenum StdVideoH264LevelIdc::UInt32 begin + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1 + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2 + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3 + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4 + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5 + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6 + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7 + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8 + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9 + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10 + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11 + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12 + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13 + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14 + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15 + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16 + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17 + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18 + STD_VIDEO_H264_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 2147483647 +end -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) +@cenum StdVideoH264PocType::UInt32 begin + 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 + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 2147483647 end -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +@cenum StdVideoH264AspectRatioIdc::UInt32 begin + 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 + STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 2147483647 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 +@cenum StdVideoH264WeightedBipredIdc::UInt32 begin + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 2147483647 + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 2147483647 end -struct VkSemaphoreGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits +@cenum StdVideoH264ModificationOfPicNumsIdc::UInt32 begin + 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 + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 2147483647 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} +@cenum StdVideoH264MemMgmtControlOp::UInt32 begin + 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 + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 2147483647 +end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +@cenum StdVideoH264CabacInitIdc::UInt32 begin + 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 + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 2147483647 end -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +@cenum StdVideoH264DisableDeblockingFilterIdc::UInt32 begin + 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 + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 2147483647 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@cenum StdVideoH264SliceType::UInt32 begin + STD_VIDEO_H264_SLICE_TYPE_P = 0 + STD_VIDEO_H264_SLICE_TYPE_B = 1 + STD_VIDEO_H264_SLICE_TYPE_I = 2 + STD_VIDEO_H264_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 2147483647 end -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +@cenum StdVideoH264PictureType::UInt32 begin + STD_VIDEO_H264_PICTURE_TYPE_P = 0 + STD_VIDEO_H264_PICTURE_TYPE_B = 1 + STD_VIDEO_H264_PICTURE_TYPE_I = 2 + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5 + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 2147483647 end -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 +@cenum StdVideoH264NonVclNaluType::UInt32 begin + 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 + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 2147483647 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} +struct StdVideoH264SpsVuiFlags + data::NTuple{4, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol) + f === :aspect_ratio_info_present_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overscan_info_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :overscan_appropriate_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :video_signal_type_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :video_full_range_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :chroma_loc_info_present_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :fixed_frame_rate_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :bitstream_restriction_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :nal_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :vcl_hrd_parameters_present_flag && return (Ptr{UInt32}(x + 0), 11, 1) + return getfield(x, f) +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) +function Base.getproperty(x::StdVideoH264SpsVuiFlags, f::Symbol) + r = Ref{StdVideoH264SpsVuiFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +function Base.setproperty!(x::Ptr{StdVideoH264SpsVuiFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function Base.propertynames(x::StdVideoH264SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :color_description_present_flag, :chroma_loc_info_present_flag, :timing_info_present_flag, :fixed_frame_rate_flag, :bitstream_restriction_flag, :nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +function 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) + ref = Ref{StdVideoH264SpsVuiFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsVuiFlags}, ref) + ptr.aspect_ratio_info_present_flag = aspect_ratio_info_present_flag + ptr.overscan_info_present_flag = overscan_info_present_flag + ptr.overscan_appropriate_flag = overscan_appropriate_flag + ptr.video_signal_type_present_flag = video_signal_type_present_flag + ptr.video_full_range_flag = video_full_range_flag + ptr.color_description_present_flag = color_description_present_flag + ptr.chroma_loc_info_present_flag = chroma_loc_info_present_flag + ptr.timing_info_present_flag = timing_info_present_flag + ptr.fixed_frame_rate_flag = fixed_frame_rate_flag + ptr.bitstream_restriction_flag = bitstream_restriction_flag + ptr.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag + ptr.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag + ref[] end -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +struct StdVideoH264HrdParameters + cpb_cnt_minus1::UInt8 + bit_rate_scale::UInt8 + cpb_size_scale::UInt8 + reserved1::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 -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features +struct StdVideoH264SequenceParameterSetVui + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH264AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coefficients && return Ptr{UInt8}(x + 15) + f === :num_units_in_tick && return Ptr{UInt32}(x + 16) + f === :time_scale && return Ptr{UInt32}(x + 20) + f === :max_num_reorder_frames && return Ptr{UInt8}(x + 24) + f === :max_dec_frame_buffering && return Ptr{UInt8}(x + 25) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 26) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 27) + f === :reserved1 && return Ptr{UInt32}(x + 28) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH264HrdParameters}}(x + 32) + return getfield(x, f) +end -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +function Base.getproperty(x::StdVideoH264SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} +function Base.propertynames(x::StdVideoH264SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coefficients, :num_units_in_tick, :time_scale, :max_num_reorder_frames, :max_dec_frame_buffering, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPresentRegionsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} +function StdVideoH264SequenceParameterSetVui(flags::StdVideoH264SpsVuiFlags, aspect_ratio_idc::StdVideoH264AspectRatioIdc, sar_width::UInt16, sar_height::UInt16, video_format::UInt8, colour_primaries::UInt8, transfer_characteristics::UInt8, matrix_coefficients::UInt8, num_units_in_tick::UInt32, time_scale::UInt32, max_num_reorder_frames::UInt8, max_dec_frame_buffering::UInt8, chroma_sample_loc_type_top_field::UInt8, chroma_sample_loc_type_bottom_field::UInt8, reserved1::UInt32, pHrdParameters::Ptr{StdVideoH264HrdParameters}) + ref = Ref{StdVideoH264SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.num_units_in_tick = num_units_in_tick + ptr.time_scale = time_scale + ptr.max_num_reorder_frames = max_num_reorder_frames + ptr.max_dec_frame_buffering = max_dec_frame_buffering + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.pHrdParameters = pHrdParameters + ref[] 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) +struct StdVideoH264SpsFlags + data::NTuple{4, UInt8} end -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +function Base.getproperty(x::Ptr{StdVideoH264SpsFlags}, f::Symbol) + f === :constraint_set0_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :constraint_set1_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constraint_set2_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :constraint_set3_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constraint_set4_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :constraint_set5_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :direct_8x8_inference_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :mb_adaptive_frame_field_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :frame_mbs_only_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :delta_pic_order_always_zero_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :gaps_in_frame_num_value_allowed_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :qpprime_y_zero_transform_bypass_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :frame_cropping_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :seq_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 15, 1) + return getfield(x, f) end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function Base.getproperty(x::StdVideoH264SpsFlags, f::Symbol) + r = Ref{StdVideoH264SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +function Base.setproperty!(x::Ptr{StdVideoH264SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function Base.propertynames(x::StdVideoH264SpsFlags, private::Bool = false) + (:constraint_set0_flag, :constraint_set1_flag, :constraint_set2_flag, :constraint_set3_flag, :constraint_set4_flag, :constraint_set5_flag, :direct_8x8_inference_flag, :mb_adaptive_frame_field_flag, :frame_mbs_only_flag, :delta_pic_order_always_zero_flag, :separate_colour_plane_flag, :gaps_in_frame_num_value_allowed_flag, :qpprime_y_zero_transform_bypass_flag, :frame_cropping_flag, :seq_scaling_matrix_present_flag, :vui_parameters_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +function 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, separate_colour_plane_flag::UInt32, gaps_in_frame_num_value_allowed_flag::UInt32, qpprime_y_zero_transform_bypass_flag::UInt32, frame_cropping_flag::UInt32, seq_scaling_matrix_present_flag::UInt32, vui_parameters_present_flag::UInt32) + ref = Ref{StdVideoH264SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SpsFlags}, ref) + ptr.constraint_set0_flag = constraint_set0_flag + ptr.constraint_set1_flag = constraint_set1_flag + ptr.constraint_set2_flag = constraint_set2_flag + ptr.constraint_set3_flag = constraint_set3_flag + ptr.constraint_set4_flag = constraint_set4_flag + ptr.constraint_set5_flag = constraint_set5_flag + ptr.direct_8x8_inference_flag = direct_8x8_inference_flag + ptr.mb_adaptive_frame_field_flag = mb_adaptive_frame_field_flag + ptr.frame_mbs_only_flag = frame_mbs_only_flag + ptr.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.gaps_in_frame_num_value_allowed_flag = gaps_in_frame_num_value_allowed_flag + ptr.qpprime_y_zero_transform_bypass_flag = qpprime_y_zero_transform_bypass_flag + ptr.frame_cropping_flag = frame_cropping_flag + ptr.seq_scaling_matrix_present_flag = seq_scaling_matrix_present_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ref[] 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 +struct StdVideoH264ScalingLists + scaling_list_present_mask::UInt16 + use_default_scaling_matrix_mask::UInt16 + ScalingList4x4::NTuple{6, NTuple{16, UInt8}} + ScalingList8x8::NTuple{6, NTuple{64, UInt8}} +end -const VkSubpassEndInfoKHR = VkSubpassEndInfo +struct StdVideoH264SequenceParameterSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264SpsFlags}(x + 0) + f === :profile_idc && return Ptr{StdVideoH264ProfileIdc}(x + 4) + f === :level_idc && return Ptr{StdVideoH264LevelIdc}(x + 8) + f === :chroma_format_idc && return Ptr{StdVideoH264ChromaFormatIdc}(x + 12) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 17) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 18) + f === :log2_max_frame_num_minus4 && return Ptr{UInt8}(x + 19) + f === :pic_order_cnt_type && return Ptr{StdVideoH264PocType}(x + 20) + f === :offset_for_non_ref_pic && return Ptr{Int32}(x + 24) + f === :offset_for_top_to_bottom_field && return Ptr{Int32}(x + 28) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 32) + f === :num_ref_frames_in_pic_order_cnt_cycle && return Ptr{UInt8}(x + 33) + f === :max_num_ref_frames && return Ptr{UInt8}(x + 34) + f === :reserved1 && return Ptr{UInt8}(x + 35) + f === :pic_width_in_mbs_minus1 && return Ptr{UInt32}(x + 36) + f === :pic_height_in_map_units_minus1 && return Ptr{UInt32}(x + 40) + f === :frame_crop_left_offset && return Ptr{UInt32}(x + 44) + f === :frame_crop_right_offset && return Ptr{UInt32}(x + 48) + f === :frame_crop_top_offset && return Ptr{UInt32}(x + 52) + f === :frame_crop_bottom_offset && return Ptr{UInt32}(x + 56) + f === :reserved2 && return Ptr{UInt32}(x + 60) + f === :pOffsetForRefFrame && return Ptr{Ptr{Int32}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 72) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH264SequenceParameterSetVui}}(x + 80) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoH264SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH264SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{StdVideoH264SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoH264SequenceParameterSet, private::Bool = false) + (:flags, :profile_idc, :level_idc, :chroma_format_idc, :seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_frame_num_minus4, :pic_order_cnt_type, :offset_for_non_ref_pic, :offset_for_top_to_bottom_field, :log2_max_pic_order_cnt_lsb_minus4, :num_ref_frames_in_pic_order_cnt_cycle, :max_num_ref_frames, :reserved1, :pic_width_in_mbs_minus1, :pic_height_in_map_units_minus1, :frame_crop_left_offset, :frame_crop_right_offset, :frame_crop_top_offset, :frame_crop_bottom_offset, :reserved2, :pOffsetForRefFrame, :pScalingLists, :pSequenceParameterSetVui, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} +function StdVideoH264SequenceParameterSet(flags::StdVideoH264SpsFlags, profile_idc::StdVideoH264ProfileIdc, level_idc::StdVideoH264LevelIdc, chroma_format_idc::StdVideoH264ChromaFormatIdc, seq_parameter_set_id::UInt8, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_frame_num_minus4::UInt8, pic_order_cnt_type::StdVideoH264PocType, offset_for_non_ref_pic::Int32, offset_for_top_to_bottom_field::Int32, log2_max_pic_order_cnt_lsb_minus4::UInt8, num_ref_frames_in_pic_order_cnt_cycle::UInt8, max_num_ref_frames::UInt8, reserved1::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, reserved2::UInt32, pOffsetForRefFrame::Ptr{Int32}, pScalingLists::Ptr{StdVideoH264ScalingLists}, pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui}) + ref = Ref{StdVideoH264SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264SequenceParameterSet}, ref) + ptr.flags = flags + ptr.profile_idc = profile_idc + ptr.level_idc = level_idc + ptr.chroma_format_idc = chroma_format_idc + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_frame_num_minus4 = log2_max_frame_num_minus4 + ptr.pic_order_cnt_type = pic_order_cnt_type + ptr.offset_for_non_ref_pic = offset_for_non_ref_pic + ptr.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.num_ref_frames_in_pic_order_cnt_cycle = num_ref_frames_in_pic_order_cnt_cycle + ptr.max_num_ref_frames = max_num_ref_frames + ptr.reserved1 = reserved1 + ptr.pic_width_in_mbs_minus1 = pic_width_in_mbs_minus1 + ptr.pic_height_in_map_units_minus1 = pic_height_in_map_units_minus1 + ptr.frame_crop_left_offset = frame_crop_left_offset + ptr.frame_crop_right_offset = frame_crop_right_offset + ptr.frame_crop_top_offset = frame_crop_top_offset + ptr.frame_crop_bottom_offset = frame_crop_bottom_offset + ptr.reserved2 = reserved2 + ptr.pOffsetForRefFrame = pOffsetForRefFrame + ptr.pScalingLists = pScalingLists + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ref[] +end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +struct StdVideoH264PpsFlags + data::NTuple{4, UInt8} end -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +function Base.getproperty(x::Ptr{StdVideoH264PpsFlags}, f::Symbol) + f === :transform_8x8_mode_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :redundant_pic_cnt_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :bottom_field_pic_order_in_frame_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :entropy_coding_mode_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pic_scaling_matrix_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + return getfield(x, f) end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function Base.getproperty(x::StdVideoH264PpsFlags, f::Symbol) + r = Ref{StdVideoH264PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +function Base.setproperty!(x::Ptr{StdVideoH264PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function Base.propertynames(x::StdVideoH264PpsFlags, private::Bool = false) + (:transform_8x8_mode_flag, :redundant_pic_cnt_present_flag, :constrained_intra_pred_flag, :deblocking_filter_control_present_flag, :weighted_pred_flag, :bottom_field_pic_order_in_frame_present_flag, :entropy_coding_mode_flag, :pic_scaling_matrix_present_flag, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +function StdVideoH264PpsFlags(transform_8x8_mode_flag::UInt32, redundant_pic_cnt_present_flag::UInt32, constrained_intra_pred_flag::UInt32, deblocking_filter_control_present_flag::UInt32, weighted_pred_flag::UInt32, bottom_field_pic_order_in_frame_present_flag::UInt32, entropy_coding_mode_flag::UInt32, pic_scaling_matrix_present_flag::UInt32) + ref = Ref{StdVideoH264PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PpsFlags}, ref) + ptr.transform_8x8_mode_flag = transform_8x8_mode_flag + ptr.redundant_pic_cnt_present_flag = redundant_pic_cnt_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.bottom_field_pic_order_in_frame_present_flag = bottom_field_pic_order_in_frame_present_flag + ptr.entropy_coding_mode_flag = entropy_coding_mode_flag + ptr.pic_scaling_matrix_present_flag = pic_scaling_matrix_present_flag + ref[] end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +struct StdVideoH264PictureParameterSet + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH264PpsFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 6) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 7) + f === :weighted_bipred_idc && return Ptr{StdVideoH264WeightedBipredIdc}(x + 8) + f === :pic_init_qp_minus26 && return Ptr{Int8}(x + 12) + f === :pic_init_qs_minus26 && return Ptr{Int8}(x + 13) + f === :chroma_qp_index_offset && return Ptr{Int8}(x + 14) + f === :second_chroma_qp_index_offset && return Ptr{Int8}(x + 15) + f === :pScalingLists && return Ptr{Ptr{StdVideoH264ScalingLists}}(x + 16) + return getfield(x, f) end -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +function Base.getproperty(x::StdVideoH264PictureParameterSet, f::Symbol) + r = Ref{StdVideoH264PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags +function Base.setproperty!(x::Ptr{StdVideoH264PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} +function Base.propertynames(x::StdVideoH264PictureParameterSet, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :weighted_bipred_idc, :pic_init_qp_minus26, :pic_init_qs_minus26, :chroma_qp_index_offset, :second_chroma_qp_index_offset, :pScalingLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +function StdVideoH264PictureParameterSet(flags::StdVideoH264PpsFlags, 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, pScalingLists::Ptr{StdVideoH264ScalingLists}) + ref = Ref{StdVideoH264PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH264PictureParameterSet}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.weighted_bipred_idc = weighted_bipred_idc + ptr.pic_init_qp_minus26 = pic_init_qp_minus26 + ptr.pic_init_qs_minus26 = pic_init_qs_minus26 + ptr.chroma_qp_index_offset = chroma_qp_index_offset + ptr.second_chroma_qp_index_offset = second_chroma_qp_index_offset + ptr.pScalingLists = pScalingLists + ref[] end -function vkGetSwapchainStatusKHR(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +struct StdVideoEncodeH264WeightTableFlags + luma_weight_l0_flag::UInt32 + chroma_weight_l0_flag::UInt32 + luma_weight_l1_flag::UInt32 + chroma_weight_l1_flag::UInt32 end -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags +struct StdVideoEncodeH264WeightTable + flags::StdVideoEncodeH264WeightTableFlags + luma_log2_weight_denom::UInt8 + chroma_log2_weight_denom::UInt8 + luma_weight_l0::NTuple{32, Int8} + luma_offset_l0::NTuple{32, Int8} + chroma_weight_l0::NTuple{32, NTuple{2, Int8}} + chroma_offset_l0::NTuple{32, NTuple{2, Int8}} + luma_weight_l1::NTuple{32, Int8} + luma_offset_l1::NTuple{32, Int8} + chroma_weight_l1::NTuple{32, NTuple{2, Int8}} + chroma_offset_l1::NTuple{32, NTuple{2, Int8}} +end -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits +struct StdVideoEncodeH264SliceHeaderFlags + data::NTuple{4, UInt8} +end -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol) + f === :direct_spatial_mv_pred_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits +function Base.getproperty(x::StdVideoEncodeH264SliceHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkExternalFencePropertiesKHR = VkExternalFenceProperties +function Base.propertynames(x::StdVideoEncodeH264SliceHeaderFlags, private::Bool = false) + (:direct_spatial_mv_pred_flag, :num_ref_idx_active_override_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} +function StdVideoEncodeH264SliceHeaderFlags(direct_spatial_mv_pred_flag::UInt32, num_ref_idx_active_override_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264SliceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeaderFlags}, ref) + ptr.direct_spatial_mv_pred_flag = direct_spatial_mv_pred_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.reserved = reserved + ref[] +end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +struct StdVideoEncodeH264PictureInfoFlags + data::NTuple{4, UInt8} end -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :long_term_reference_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :adaptive_ref_pic_marking_mode_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 5, 27) + return getfield(x, f) end -const VkFenceImportFlagsKHR = VkFenceImportFlags +function Base.getproperty(x::StdVideoEncodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo +function Base.propertynames(x::StdVideoEncodeH264PictureInfoFlags, private::Bool = false) + (:IdrPicFlag, :is_reference, :no_output_of_prior_pics_flag, :long_term_reference_flag, :adaptive_ref_pic_marking_mode_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint +function StdVideoEncodeH264PictureInfoFlags(IdrPicFlag::UInt32, is_reference::UInt32, no_output_of_prior_pics_flag::UInt32, long_term_reference_flag::UInt32, adaptive_ref_pic_marking_mode_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfoFlags}, ref) + ptr.IdrPicFlag = IdrPicFlag + ptr.is_reference = is_reference + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.long_term_reference_flag = long_term_reference_flag + ptr.adaptive_ref_pic_marking_mode_flag = adaptive_ref_pic_marking_mode_flag + ptr.reserved = reserved + ref[] end -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits +struct StdVideoEncodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} end -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +function StdVideoEncodeH264ReferenceInfoFlags(used_for_long_term_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.reserved = reserved + ref[] end -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +struct StdVideoEncodeH264ReferenceListsInfoFlags + data::NTuple{4, UInt8} 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 +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) 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 +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end 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 +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - 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 +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags +function StdVideoEncodeH264ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH264ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +struct StdVideoEncodeH264RefListModEntry + modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc + abs_diff_pic_num_minus1::UInt16 + long_term_pic_num::UInt16 end -const VkAcquireProfilingLockFlagsKHR = VkFlags +struct StdVideoEncodeH264RefPicMarkingEntry + memory_management_control_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 VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 +struct StdVideoEncodeH264ReferenceListsInfo + data::NTuple{104, UInt8} end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{32, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{32, UInt8}}(x + 38) + f === :refList0ModOpCount && return Ptr{UInt8}(x + 70) + f === :refList1ModOpCount && return Ptr{UInt8}(x + 71) + f === :refPicMarkingOpCount && return Ptr{UInt8}(x + 72) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 73) + f === :pRefList0ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 80) + f === :pRefList1ModOperations && return Ptr{Ptr{StdVideoEncodeH264RefListModEntry}}(x + 88) + f === :pRefPicMarkingOperations && return Ptr{Ptr{StdVideoEncodeH264RefPicMarkingEntry}}(x + 96) + return getfield(x, f) end -struct VkPerformanceCounterKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} +function Base.getproperty(x::StdVideoEncodeH264ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPerformanceCounterDescriptionKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkQueryPoolPerformanceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} +function Base.propertynames(x::StdVideoEncodeH264ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :refList0ModOpCount, :refList1ModOpCount, :refPicMarkingOpCount, :reserved1, :pRefList0ModOperations, :pRefList1ModOperations, :pRefPicMarkingOperations, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} +function StdVideoEncodeH264ReferenceListsInfo(flags::StdVideoEncodeH264ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{32, UInt8}, RefPicList1::NTuple{32, UInt8}, refList0ModOpCount::UInt8, refList1ModOpCount::UInt8, refPicMarkingOpCount::UInt8, reserved1::NTuple{7, UInt8}, pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry}, pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry}) + ref = Ref{StdVideoEncodeH264ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.refList0ModOpCount = refList0ModOpCount + ptr.refList1ModOpCount = refList1ModOpCount + ptr.refPicMarkingOpCount = refPicMarkingOpCount + ptr.reserved1 = reserved1 + ptr.pRefList0ModOperations = pRefList0ModOperations + ptr.pRefList1ModOperations = pRefList1ModOperations + ptr.pRefPicMarkingOperations = pRefPicMarkingOperations + ref[] 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) +struct StdVideoEncodeH264PictureInfo + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :idr_pic_id && return Ptr{UInt16}(x + 6) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 8) + f === :frame_num && return Ptr{UInt32}(x + 12) + f === :PicOrderCnt && return Ptr{Int32}(x + 16) + f === :temporal_id && return Ptr{UInt8}(x + 20) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 21) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH264ReferenceListsInfo}}(x + 24) return getfield(x, f) end -function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) - r = Ref{VkPerformanceCounterResultKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) +function Base.getproperty(x::StdVideoEncodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, r) fptr = getproperty(ptr, f) GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264PictureInfo}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} +function Base.propertynames(x::StdVideoEncodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :idr_pic_id, :primary_pic_type, :frame_num, :PicOrderCnt, :temporal_id, :reserved1, :pRefLists, if private + fieldnames(typeof(x)) + else + () + end...) +end -function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) - ref = Ref{VkPerformanceCounterResultKHR}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) - if val isa Int32 - ptr.int32 = val - elseif val isa Int64 - ptr.int64 = val - elseif val isa UInt32 - ptr.uint32 = val - elseif val isa UInt64 - ptr.uint64 = val - elseif val isa Cfloat - ptr.float32 = val - elseif val isa Cdouble - ptr.float64 = val - end +function StdVideoEncodeH264PictureInfo(flags::StdVideoEncodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, idr_pic_id::UInt16, primary_pic_type::StdVideoH264PictureType, frame_num::UInt32, PicOrderCnt::Int32, temporal_id::UInt8, reserved1::NTuple{3, UInt8}, pRefLists::Ptr{StdVideoEncodeH264ReferenceListsInfo}) + ref = Ref{StdVideoEncodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.idr_pic_id = idr_pic_id + ptr.primary_pic_type = primary_pic_type + ptr.frame_num = frame_num + ptr.PicOrderCnt = PicOrderCnt + ptr.temporal_id = temporal_id + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists ref[] end -struct VkAcquireProfilingLockInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 +struct StdVideoEncodeH264ReferenceInfo + data::NTuple{24, UInt8} end -struct VkPerformanceQuerySubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - counterPassIndex::UInt32 +function Base.getproperty(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264ReferenceInfoFlags}(x + 0) + f === :primary_pic_type && return Ptr{StdVideoH264PictureType}(x + 4) + f === :FrameNum && return Ptr{UInt32}(x + 8) + f === :PicOrderCnt && return Ptr{Int32}(x + 12) + f === :long_term_pic_num && return Ptr{UInt16}(x + 16) + f === :long_term_frame_idx && return Ptr{UInt16}(x + 18) + f === :temporal_id && return Ptr{UInt8}(x + 20) + return getfield(x, f) 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) +function Base.getproperty(x::StdVideoEncodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function Base.propertynames(x::StdVideoEncodeH264ReferenceInfo, private::Bool = false) + (:flags, :primary_pic_type, :FrameNum, :PicOrderCnt, :long_term_pic_num, :long_term_frame_idx, :temporal_id, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +function StdVideoEncodeH264ReferenceInfo(flags::StdVideoEncodeH264ReferenceInfoFlags, primary_pic_type::StdVideoH264PictureType, FrameNum::UInt32, PicOrderCnt::Int32, long_term_pic_num::UInt16, long_term_frame_idx::UInt16, temporal_id::UInt8) + ref = Ref{StdVideoEncodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.primary_pic_type = primary_pic_type + ptr.FrameNum = FrameNum + ptr.PicOrderCnt = PicOrderCnt + ptr.long_term_pic_num = long_term_pic_num + ptr.long_term_frame_idx = long_term_frame_idx + ptr.temporal_id = temporal_id + ref[] end -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +struct StdVideoEncodeH264SliceHeader + data::NTuple{32, UInt8} end -function vkAcquireProfilingLockKHR(device, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +function Base.getproperty(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH264SliceHeaderFlags}(x + 0) + f === :first_mb_in_slice && return Ptr{UInt32}(x + 4) + f === :slice_type && return Ptr{StdVideoH264SliceType}(x + 8) + f === :slice_alpha_c0_offset_div2 && return Ptr{Int8}(x + 12) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 13) + f === :slice_qp_delta && return Ptr{Int8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :cabac_init_idc && return Ptr{StdVideoH264CabacInitIdc}(x + 16) + f === :disable_deblocking_filter_idc && return Ptr{StdVideoH264DisableDeblockingFilterIdc}(x + 20) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH264WeightTable}}(x + 24) + return getfield(x, f) end -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +function Base.getproperty(x::StdVideoEncodeH264SliceHeader, f::Symbol) + r = Ref{StdVideoEncodeH264SliceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkReleaseProfilingLockKHR(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +function Base.setproperty!(x::Ptr{StdVideoEncodeH264SliceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -const VkPointClippingBehaviorKHR = VkPointClippingBehavior - -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin - -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties - -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo +function Base.propertynames(x::StdVideoEncodeH264SliceHeader, private::Bool = false) + (:flags, :first_mb_in_slice, :slice_type, :slice_alpha_c0_offset_div2, :slice_beta_offset_div2, :slice_qp_delta, :reserved1, :cabac_init_idc, :disable_deblocking_filter_idc, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference +function StdVideoEncodeH264SliceHeader(flags::StdVideoEncodeH264SliceHeaderFlags, first_mb_in_slice::UInt32, slice_type::StdVideoH264SliceType, slice_alpha_c0_offset_div2::Int8, slice_beta_offset_div2::Int8, slice_qp_delta::Int8, reserved1::UInt8, cabac_init_idc::StdVideoH264CabacInitIdc, disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc, pWeightTable::Ptr{StdVideoEncodeH264WeightTable}) + ref = Ref{StdVideoEncodeH264SliceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH264SliceHeader}, ref) + ptr.flags = flags + ptr.first_mb_in_slice = first_mb_in_slice + ptr.slice_type = slice_type + ptr.slice_alpha_c0_offset_div2 = slice_alpha_c0_offset_div2 + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.cabac_init_idc = cabac_init_idc + ptr.disable_deblocking_filter_idc = disable_deblocking_filter_idc + ptr.pWeightTable = pWeightTable + ref[] +end -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo +@cenum VkVideoEncodeH264CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 128 + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH264RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH264RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH264CapabilityFlagsKHR + maxLevelIdc::StdVideoH264LevelIdc + maxSliceCount::UInt32 + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxTemporalLayerCount::UInt32 + expectDyadicTemporalLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH264StdFlagsKHR +end -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo +struct VkVideoEncodeH264QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end -struct VkPhysicalDeviceSurfaceInfo2KHR +struct VkVideoEncodeH264QualityLevelPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - surface::VkSurfaceKHR + preferredRateControlFlags::VkVideoEncodeH264RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH264QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 + preferredStdEntropyCodingModeFlag::VkBool32 end -struct VkSurfaceCapabilities2KHR +struct VkVideoEncodeH264SessionCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH264LevelIdc end -struct VkSurfaceFormat2KHR +struct VkVideoEncodeH264SessionParametersAddInfoKHR 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) + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} end -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +struct VkVideoEncodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoKHR} end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +struct VkVideoEncodeH264SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdSPSId::UInt32 + stdPPSId::UInt32 end -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 end -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR +struct VkVideoEncodeH264NaluSliceInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR + constantQp::Int32 + pStdSliceHeader::Ptr{StdVideoEncodeH264SliceHeader} end -struct VkDisplayPlaneProperties2KHR +struct VkVideoEncodeH264PictureInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR + naluSliceEntryCount::UInt32 + pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} + generatePrefixNalu::VkBool32 end -struct VkDisplayModeProperties2KHR +struct VkVideoEncodeH264DpbSlotInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR + pStdReferenceInfo::Ptr{StdVideoEncodeH264ReferenceInfo} end -struct VkDisplayPlaneInfo2KHR +struct VkVideoEncodeH264ProfileInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 + stdProfileIdc::StdVideoH264ProfileIdc end -struct VkDisplayPlaneCapabilities2KHR +struct VkVideoEncodeH264RateControlInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR + flags::VkVideoEncodeH264RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + temporalLayerCount::UInt32 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) +struct VkVideoEncodeH264FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 end -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +struct VkVideoEncodeH264RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH264QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH264QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH264FrameSizeKHR end -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +struct VkVideoEncodeH264GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 end -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +@cenum StdVideoH265ChromaFormatIdc::UInt32 begin + 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 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +@cenum StdVideoH265ProfileIdc::UInt32 begin + 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 + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 end -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +@cenum StdVideoH265LevelIdc::UInt32 begin + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 + STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +@cenum StdVideoH265SliceType::UInt32 begin + STD_VIDEO_H265_SLICE_TYPE_B = 0 + STD_VIDEO_H265_SLICE_TYPE_P = 1 + STD_VIDEO_H265_SLICE_TYPE_I = 2 + STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 end -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) - ccall(fptr, 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 vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, 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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) - ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) - ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, 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 - -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) - ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, 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 - -@cenum StdVideoH265ChromaFormatIdc::UInt32 begin - 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 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 2147483647 - STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265ProfileIdc::UInt32 begin - 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 - STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265LevelIdc::UInt32 begin - STD_VIDEO_H265_LEVEL_IDC_1_0 = 0 - STD_VIDEO_H265_LEVEL_IDC_2_0 = 1 - STD_VIDEO_H265_LEVEL_IDC_2_1 = 2 - STD_VIDEO_H265_LEVEL_IDC_3_0 = 3 - STD_VIDEO_H265_LEVEL_IDC_3_1 = 4 - STD_VIDEO_H265_LEVEL_IDC_4_0 = 5 - STD_VIDEO_H265_LEVEL_IDC_4_1 = 6 - STD_VIDEO_H265_LEVEL_IDC_5_0 = 7 - STD_VIDEO_H265_LEVEL_IDC_5_1 = 8 - STD_VIDEO_H265_LEVEL_IDC_5_2 = 9 - STD_VIDEO_H265_LEVEL_IDC_6_0 = 10 - STD_VIDEO_H265_LEVEL_IDC_6_1 = 11 - STD_VIDEO_H265_LEVEL_IDC_6_2 = 12 - STD_VIDEO_H265_LEVEL_IDC_INVALID = 2147483647 - STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265SliceType::UInt32 begin - STD_VIDEO_H265_SLICE_TYPE_B = 0 - STD_VIDEO_H265_SLICE_TYPE_P = 1 - STD_VIDEO_H265_SLICE_TYPE_I = 2 - STD_VIDEO_H265_SLICE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum StdVideoH265PictureType::UInt32 begin - STD_VIDEO_H265_PICTURE_TYPE_P = 0 - STD_VIDEO_H265_PICTURE_TYPE_B = 1 - STD_VIDEO_H265_PICTURE_TYPE_I = 2 - STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 - STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 - STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 +@cenum StdVideoH265PictureType::UInt32 begin + STD_VIDEO_H265_PICTURE_TYPE_P = 0 + STD_VIDEO_H265_PICTURE_TYPE_B = 1 + STD_VIDEO_H265_PICTURE_TYPE_I = 2 + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3 + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 2147483647 + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 2147483647 end @cenum StdVideoH265AspectRatioIdc::UInt32 begin @@ -11016,6 +11956,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265HrdFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265HrdFlags, private::Bool = false) + (:nal_hrd_parameters_present_flag, :vcl_hrd_parameters_present_flag, :sub_pic_hrd_params_present_flag, :sub_pic_cpb_params_in_pic_timing_sei_flag, :fixed_pic_rate_general_flag, :fixed_pic_rate_within_cvs_flag, :low_delay_hrd_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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::UInt32, fixed_pic_rate_within_cvs_flag::UInt32, low_delay_hrd_flag::UInt32) ref = Ref{StdVideoH265HrdFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdFlags}, ref) @@ -11030,21 +11978,66 @@ function StdVideoH265HrdFlags(nal_hrd_parameters_present_flag::UInt32, vcl_hrd_p end struct StdVideoH265HrdParameters - flags::StdVideoH265HrdFlags - 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} - reserved::NTuple{3, UInt16} - pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters} - pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters} + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265HrdParameters}, f::Symbol) + f === :flags && return Ptr{StdVideoH265HrdFlags}(x + 0) + f === :tick_divisor_minus2 && return Ptr{UInt8}(x + 4) + f === :du_cpb_removal_delay_increment_length_minus1 && return Ptr{UInt8}(x + 5) + f === :dpb_output_delay_du_length_minus1 && return Ptr{UInt8}(x + 6) + f === :bit_rate_scale && return Ptr{UInt8}(x + 7) + f === :cpb_size_scale && return Ptr{UInt8}(x + 8) + f === :cpb_size_du_scale && return Ptr{UInt8}(x + 9) + f === :initial_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 10) + f === :au_cpb_removal_delay_length_minus1 && return Ptr{UInt8}(x + 11) + f === :dpb_output_delay_length_minus1 && return Ptr{UInt8}(x + 12) + f === :cpb_cnt_minus1 && return Ptr{NTuple{7, UInt8}}(x + 13) + f === :elemental_duration_in_tc_minus1 && return Ptr{NTuple{7, UInt16}}(x + 20) + f === :reserved && return Ptr{NTuple{3, UInt16}}(x + 34) + f === :pSubLayerHrdParametersNal && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 40) + f === :pSubLayerHrdParametersVcl && return Ptr{Ptr{StdVideoH265SubLayerHrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265HrdParameters, f::Symbol) + r = Ref{StdVideoH265HrdParameters}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265HrdParameters}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265HrdParameters, private::Bool = false) + (:flags, :tick_divisor_minus2, :du_cpb_removal_delay_increment_length_minus1, :dpb_output_delay_du_length_minus1, :bit_rate_scale, :cpb_size_scale, :cpb_size_du_scale, :initial_cpb_removal_delay_length_minus1, :au_cpb_removal_delay_length_minus1, :dpb_output_delay_length_minus1, :cpb_cnt_minus1, :elemental_duration_in_tc_minus1, :reserved, :pSubLayerHrdParametersNal, :pSubLayerHrdParametersVcl, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265HrdParameters(flags::StdVideoH265HrdFlags, 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}, reserved::NTuple{3, UInt16}, pSubLayerHrdParametersNal::Ptr{StdVideoH265SubLayerHrdParameters}, pSubLayerHrdParametersVcl::Ptr{StdVideoH265SubLayerHrdParameters}) + ref = Ref{StdVideoH265HrdParameters}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265HrdParameters}, ref) + ptr.flags = flags + ptr.tick_divisor_minus2 = tick_divisor_minus2 + ptr.du_cpb_removal_delay_increment_length_minus1 = du_cpb_removal_delay_increment_length_minus1 + ptr.dpb_output_delay_du_length_minus1 = dpb_output_delay_du_length_minus1 + ptr.bit_rate_scale = bit_rate_scale + ptr.cpb_size_scale = cpb_size_scale + ptr.cpb_size_du_scale = cpb_size_du_scale + ptr.initial_cpb_removal_delay_length_minus1 = initial_cpb_removal_delay_length_minus1 + ptr.au_cpb_removal_delay_length_minus1 = au_cpb_removal_delay_length_minus1 + ptr.dpb_output_delay_length_minus1 = dpb_output_delay_length_minus1 + ptr.cpb_cnt_minus1 = cpb_cnt_minus1 + ptr.elemental_duration_in_tc_minus1 = elemental_duration_in_tc_minus1 + ptr.reserved = reserved + ptr.pSubLayerHrdParametersNal = pSubLayerHrdParametersNal + ptr.pSubLayerHrdParametersVcl = pSubLayerHrdParametersVcl + ref[] end struct StdVideoH265VpsFlags @@ -11102,6 +12095,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265VpsFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265VpsFlags, private::Bool = false) + (:vps_temporal_id_nesting_flag, :vps_sub_layer_ordering_info_present_flag, :vps_timing_info_present_flag, :vps_poc_proportional_to_timing_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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) ref = Ref{StdVideoH265VpsFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265VpsFlags}, ref) @@ -11168,6 +12169,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevelFlags}, f::Symbol, end end +function Base.propertynames(x::StdVideoH265ProfileTierLevelFlags, private::Bool = false) + (:general_tier_flag, :general_progressive_source_flag, :general_interlaced_source_flag, :general_non_packed_constraint_flag, :general_frame_only_constraint_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_progressive_source_flag::UInt32, general_interlaced_source_flag::UInt32, general_non_packed_constraint_flag::UInt32, general_frame_only_constraint_flag::UInt32) ref = Ref{StdVideoH265ProfileTierLevelFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevelFlags}, ref) @@ -11180,24 +12189,99 @@ function StdVideoH265ProfileTierLevelFlags(general_tier_flag::UInt32, general_pr end struct StdVideoH265ProfileTierLevel - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ProfileTierLevelFlags}(x + 0) + f === :general_profile_idc && return Ptr{StdVideoH265ProfileIdc}(x + 4) + f === :general_level_idc && return Ptr{StdVideoH265LevelIdc}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ProfileTierLevel, f::Symbol) + r = Ref{StdVideoH265ProfileTierLevel}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ProfileTierLevel}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ProfileTierLevel, private::Bool = false) + (:flags, :general_profile_idc, :general_level_idc, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ProfileTierLevel(flags::StdVideoH265ProfileTierLevelFlags, general_profile_idc::StdVideoH265ProfileIdc, general_level_idc::StdVideoH265LevelIdc) + ref = Ref{StdVideoH265ProfileTierLevel}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ProfileTierLevel}, ref) + ptr.flags = flags + ptr.general_profile_idc = general_profile_idc + ptr.general_level_idc = general_level_idc + ref[] end struct StdVideoH265VideoParameterSet - flags::StdVideoH265VpsFlags - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - reserved3::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pHrdParameters::Ptr{StdVideoH265HrdParameters} - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265VpsFlags}(x + 0) + f === :vps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :vps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :vps_num_units_in_tick && return Ptr{UInt32}(x + 8) + f === :vps_time_scale && return Ptr{UInt32}(x + 12) + f === :vps_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 16) + f === :reserved3 && return Ptr{UInt32}(x + 20) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 24) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 32) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265VideoParameterSet, f::Symbol) + r = Ref{StdVideoH265VideoParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265VideoParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265VideoParameterSet, private::Bool = false) + (:flags, :vps_video_parameter_set_id, :vps_max_sub_layers_minus1, :reserved1, :reserved2, :vps_num_units_in_tick, :vps_time_scale, :vps_num_ticks_poc_diff_one_minus1, :reserved3, :pDecPicBufMgr, :pHrdParameters, :pProfileTierLevel, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265VideoParameterSet(flags::StdVideoH265VpsFlags, vps_video_parameter_set_id::UInt8, vps_max_sub_layers_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, vps_num_units_in_tick::UInt32, vps_time_scale::UInt32, vps_num_ticks_poc_diff_one_minus1::UInt32, reserved3::UInt32, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pHrdParameters::Ptr{StdVideoH265HrdParameters}, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}) + ref = Ref{StdVideoH265VideoParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265VideoParameterSet}, ref) + ptr.flags = flags + ptr.vps_video_parameter_set_id = vps_video_parameter_set_id + ptr.vps_max_sub_layers_minus1 = vps_max_sub_layers_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.vps_num_units_in_tick = vps_num_units_in_tick + ptr.vps_time_scale = vps_time_scale + ptr.vps_num_ticks_poc_diff_one_minus1 = vps_num_ticks_poc_diff_one_minus1 + ptr.reserved3 = reserved3 + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pHrdParameters = pHrdParameters + ptr.pProfileTierLevel = pProfileTierLevel + ref[] end struct StdVideoH265ScalingLists @@ -11278,6 +12362,14 @@ function Base.setproperty!(x::Ptr{StdVideoH265SpsVuiFlags}, f::Symbol, v) end end +function Base.propertynames(x::StdVideoH265SpsVuiFlags, private::Bool = false) + (:aspect_ratio_info_present_flag, :overscan_info_present_flag, :overscan_appropriate_flag, :video_signal_type_present_flag, :video_full_range_flag, :colour_description_present_flag, :chroma_loc_info_present_flag, :neutral_chroma_indication_flag, :field_seq_flag, :frame_field_info_present_flag, :default_display_window_flag, :vui_timing_info_present_flag, :vui_poc_proportional_to_timing_flag, :vui_hrd_parameters_present_flag, :bitstream_restriction_flag, :tiles_fixed_structure_flag, :motion_vectors_over_pic_boundaries_flag, :restricted_ref_pic_lists_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + function 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) ref = Ref{StdVideoH265SpsVuiFlags}() ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsVuiFlags}, ref) @@ -11302,9555 +12394,20384 @@ function StdVideoH265SpsVuiFlags(aspect_ratio_info_present_flag::UInt32, oversca ref[] end -struct StdVideoH265SequenceParameterSetVui - flags::StdVideoH265SpsVuiFlags - aspect_ratio_idc::StdVideoH265AspectRatioIdc - 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 - reserved1::UInt8 - reserved2::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 - min_spatial_segmentation_idc::UInt16 - reserved3::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 - pHrdParameters::Ptr{StdVideoH265HrdParameters} +struct StdVideoH265SequenceParameterSetVui + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsVuiFlags}(x + 0) + f === :aspect_ratio_idc && return Ptr{StdVideoH265AspectRatioIdc}(x + 4) + f === :sar_width && return Ptr{UInt16}(x + 8) + f === :sar_height && return Ptr{UInt16}(x + 10) + f === :video_format && return Ptr{UInt8}(x + 12) + f === :colour_primaries && return Ptr{UInt8}(x + 13) + f === :transfer_characteristics && return Ptr{UInt8}(x + 14) + f === :matrix_coeffs && return Ptr{UInt8}(x + 15) + f === :chroma_sample_loc_type_top_field && return Ptr{UInt8}(x + 16) + f === :chroma_sample_loc_type_bottom_field && return Ptr{UInt8}(x + 17) + f === :reserved1 && return Ptr{UInt8}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 19) + f === :def_disp_win_left_offset && return Ptr{UInt16}(x + 20) + f === :def_disp_win_right_offset && return Ptr{UInt16}(x + 22) + f === :def_disp_win_top_offset && return Ptr{UInt16}(x + 24) + f === :def_disp_win_bottom_offset && return Ptr{UInt16}(x + 26) + f === :vui_num_units_in_tick && return Ptr{UInt32}(x + 28) + f === :vui_time_scale && return Ptr{UInt32}(x + 32) + f === :vui_num_ticks_poc_diff_one_minus1 && return Ptr{UInt32}(x + 36) + f === :min_spatial_segmentation_idc && return Ptr{UInt16}(x + 40) + f === :reserved3 && return Ptr{UInt16}(x + 42) + f === :max_bytes_per_pic_denom && return Ptr{UInt8}(x + 44) + f === :max_bits_per_min_cu_denom && return Ptr{UInt8}(x + 45) + f === :log2_max_mv_length_horizontal && return Ptr{UInt8}(x + 46) + f === :log2_max_mv_length_vertical && return Ptr{UInt8}(x + 47) + f === :pHrdParameters && return Ptr{Ptr{StdVideoH265HrdParameters}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSetVui, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSetVui}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSetVui}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSetVui, private::Bool = false) + (:flags, :aspect_ratio_idc, :sar_width, :sar_height, :video_format, :colour_primaries, :transfer_characteristics, :matrix_coeffs, :chroma_sample_loc_type_top_field, :chroma_sample_loc_type_bottom_field, :reserved1, :reserved2, :def_disp_win_left_offset, :def_disp_win_right_offset, :def_disp_win_top_offset, :def_disp_win_bottom_offset, :vui_num_units_in_tick, :vui_time_scale, :vui_num_ticks_poc_diff_one_minus1, :min_spatial_segmentation_idc, :reserved3, :max_bytes_per_pic_denom, :max_bits_per_min_cu_denom, :log2_max_mv_length_horizontal, :log2_max_mv_length_vertical, :pHrdParameters, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSetVui(flags::StdVideoH265SpsVuiFlags, aspect_ratio_idc::StdVideoH265AspectRatioIdc, 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, reserved1::UInt8, reserved2::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, min_spatial_segmentation_idc::UInt16, reserved3::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, pHrdParameters::Ptr{StdVideoH265HrdParameters}) + ref = Ref{StdVideoH265SequenceParameterSetVui}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSetVui}, ref) + ptr.flags = flags + ptr.aspect_ratio_idc = aspect_ratio_idc + ptr.sar_width = sar_width + ptr.sar_height = sar_height + ptr.video_format = video_format + ptr.colour_primaries = colour_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coeffs = matrix_coeffs + ptr.chroma_sample_loc_type_top_field = chroma_sample_loc_type_top_field + ptr.chroma_sample_loc_type_bottom_field = chroma_sample_loc_type_bottom_field + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.def_disp_win_left_offset = def_disp_win_left_offset + ptr.def_disp_win_right_offset = def_disp_win_right_offset + ptr.def_disp_win_top_offset = def_disp_win_top_offset + ptr.def_disp_win_bottom_offset = def_disp_win_bottom_offset + ptr.vui_num_units_in_tick = vui_num_units_in_tick + ptr.vui_time_scale = vui_time_scale + ptr.vui_num_ticks_poc_diff_one_minus1 = vui_num_ticks_poc_diff_one_minus1 + ptr.min_spatial_segmentation_idc = min_spatial_segmentation_idc + ptr.reserved3 = reserved3 + ptr.max_bytes_per_pic_denom = max_bytes_per_pic_denom + ptr.max_bits_per_min_cu_denom = max_bits_per_min_cu_denom + ptr.log2_max_mv_length_horizontal = log2_max_mv_length_horizontal + ptr.log2_max_mv_length_vertical = log2_max_mv_length_vertical + ptr.pHrdParameters = pHrdParameters + ref[] +end + +struct StdVideoH265PredictorPaletteEntries + PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +end + +struct StdVideoH265SpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) + f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) + r = Ref{StdVideoH265SpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265SpsFlags, private::Bool = false) + (:sps_temporal_id_nesting_flag, :separate_colour_plane_flag, :conformance_window_flag, :sps_sub_layer_ordering_info_present_flag, :scaling_list_enabled_flag, :sps_scaling_list_data_present_flag, :amp_enabled_flag, :sample_adaptive_offset_enabled_flag, :pcm_enabled_flag, :pcm_loop_filter_disabled_flag, :long_term_ref_pics_present_flag, :sps_temporal_mvp_enabled_flag, :strong_intra_smoothing_enabled_flag, :vui_parameters_present_flag, :sps_extension_present_flag, :sps_range_extension_flag, :transform_skip_rotation_enabled_flag, :transform_skip_context_enabled_flag, :implicit_rdpcm_enabled_flag, :explicit_rdpcm_enabled_flag, :extended_precision_processing_flag, :intra_smoothing_disabled_flag, :high_precision_offsets_enabled_flag, :persistent_rice_adaptation_enabled_flag, :cabac_bypass_alignment_enabled_flag, :sps_scc_extension_flag, :sps_curr_pic_ref_enabled_flag, :palette_mode_enabled_flag, :sps_palette_predictor_initializers_present_flag, :intra_boundary_filtering_disabled_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) + ref = Ref{StdVideoH265SpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) + ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag + ptr.separate_colour_plane_flag = separate_colour_plane_flag + ptr.conformance_window_flag = conformance_window_flag + ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag + ptr.scaling_list_enabled_flag = scaling_list_enabled_flag + ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag + ptr.amp_enabled_flag = amp_enabled_flag + ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag + ptr.pcm_enabled_flag = pcm_enabled_flag + ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag + ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag + ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag + ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag + ptr.vui_parameters_present_flag = vui_parameters_present_flag + ptr.sps_extension_present_flag = sps_extension_present_flag + ptr.sps_range_extension_flag = sps_range_extension_flag + ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag + ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag + ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag + ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag + ptr.extended_precision_processing_flag = extended_precision_processing_flag + ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag + ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag + ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag + ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag + ptr.sps_scc_extension_flag = sps_scc_extension_flag + ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag + ptr.palette_mode_enabled_flag = palette_mode_enabled_flag + ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag + ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag + ref[] +end + +struct StdVideoH265ShortTermRefPicSetFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) + f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSetFlags, private::Bool = false) + (:inter_ref_pic_set_prediction_flag, :delta_rps_sign, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) + ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) + ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag + ptr.delta_rps_sign = delta_rps_sign + ref[] +end + +struct StdVideoH265ShortTermRefPicSet + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265ShortTermRefPicSetFlags}(x + 0) + f === :delta_idx_minus1 && return Ptr{UInt32}(x + 4) + f === :use_delta_flag && return Ptr{UInt16}(x + 8) + f === :abs_delta_rps_minus1 && return Ptr{UInt16}(x + 10) + f === :used_by_curr_pic_flag && return Ptr{UInt16}(x + 12) + f === :used_by_curr_pic_s0_flag && return Ptr{UInt16}(x + 14) + f === :used_by_curr_pic_s1_flag && return Ptr{UInt16}(x + 16) + f === :reserved1 && return Ptr{UInt16}(x + 18) + f === :reserved2 && return Ptr{UInt8}(x + 20) + f === :reserved3 && return Ptr{UInt8}(x + 21) + f === :num_negative_pics && return Ptr{UInt8}(x + 22) + f === :num_positive_pics && return Ptr{UInt8}(x + 23) + f === :delta_poc_s0_minus1 && return Ptr{NTuple{16, UInt16}}(x + 24) + f === :delta_poc_s1_minus1 && return Ptr{NTuple{16, UInt16}}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265ShortTermRefPicSet, f::Symbol) + r = Ref{StdVideoH265ShortTermRefPicSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265ShortTermRefPicSet, private::Bool = false) + (:flags, :delta_idx_minus1, :use_delta_flag, :abs_delta_rps_minus1, :used_by_curr_pic_flag, :used_by_curr_pic_s0_flag, :used_by_curr_pic_s1_flag, :reserved1, :reserved2, :reserved3, :num_negative_pics, :num_positive_pics, :delta_poc_s0_minus1, :delta_poc_s1_minus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265ShortTermRefPicSet(flags::StdVideoH265ShortTermRefPicSetFlags, delta_idx_minus1::UInt32, use_delta_flag::UInt16, abs_delta_rps_minus1::UInt16, used_by_curr_pic_flag::UInt16, used_by_curr_pic_s0_flag::UInt16, used_by_curr_pic_s1_flag::UInt16, reserved1::UInt16, reserved2::UInt8, reserved3::UInt8, num_negative_pics::UInt8, num_positive_pics::UInt8, delta_poc_s0_minus1::NTuple{16, UInt16}, delta_poc_s1_minus1::NTuple{16, UInt16}) + ref = Ref{StdVideoH265ShortTermRefPicSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSet}, ref) + ptr.flags = flags + ptr.delta_idx_minus1 = delta_idx_minus1 + ptr.use_delta_flag = use_delta_flag + ptr.abs_delta_rps_minus1 = abs_delta_rps_minus1 + ptr.used_by_curr_pic_flag = used_by_curr_pic_flag + ptr.used_by_curr_pic_s0_flag = used_by_curr_pic_s0_flag + ptr.used_by_curr_pic_s1_flag = used_by_curr_pic_s1_flag + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.reserved3 = reserved3 + ptr.num_negative_pics = num_negative_pics + ptr.num_positive_pics = num_positive_pics + ptr.delta_poc_s0_minus1 = delta_poc_s0_minus1 + ptr.delta_poc_s1_minus1 = delta_poc_s1_minus1 + ref[] +end + +struct StdVideoH265LongTermRefPicsSps + used_by_curr_pic_lt_sps_flag::UInt32 + lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +end + +struct StdVideoH265SequenceParameterSet + data::NTuple{112, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265SpsFlags}(x + 0) + f === :chroma_format_idc && return Ptr{StdVideoH265ChromaFormatIdc}(x + 4) + f === :pic_width_in_luma_samples && return Ptr{UInt32}(x + 8) + f === :pic_height_in_luma_samples && return Ptr{UInt32}(x + 12) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 16) + f === :sps_max_sub_layers_minus1 && return Ptr{UInt8}(x + 17) + f === :sps_seq_parameter_set_id && return Ptr{UInt8}(x + 18) + f === :bit_depth_luma_minus8 && return Ptr{UInt8}(x + 19) + f === :bit_depth_chroma_minus8 && return Ptr{UInt8}(x + 20) + f === :log2_max_pic_order_cnt_lsb_minus4 && return Ptr{UInt8}(x + 21) + f === :log2_min_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 22) + f === :log2_diff_max_min_luma_coding_block_size && return Ptr{UInt8}(x + 23) + f === :log2_min_luma_transform_block_size_minus2 && return Ptr{UInt8}(x + 24) + f === :log2_diff_max_min_luma_transform_block_size && return Ptr{UInt8}(x + 25) + f === :max_transform_hierarchy_depth_inter && return Ptr{UInt8}(x + 26) + f === :max_transform_hierarchy_depth_intra && return Ptr{UInt8}(x + 27) + f === :num_short_term_ref_pic_sets && return Ptr{UInt8}(x + 28) + f === :num_long_term_ref_pics_sps && return Ptr{UInt8}(x + 29) + f === :pcm_sample_bit_depth_luma_minus1 && return Ptr{UInt8}(x + 30) + f === :pcm_sample_bit_depth_chroma_minus1 && return Ptr{UInt8}(x + 31) + f === :log2_min_pcm_luma_coding_block_size_minus3 && return Ptr{UInt8}(x + 32) + f === :log2_diff_max_min_pcm_luma_coding_block_size && return Ptr{UInt8}(x + 33) + f === :reserved1 && return Ptr{UInt8}(x + 34) + f === :reserved2 && return Ptr{UInt8}(x + 35) + f === :palette_max_size && return Ptr{UInt8}(x + 36) + f === :delta_palette_max_predictor_size && return Ptr{UInt8}(x + 37) + f === :motion_vector_resolution_control_idc && return Ptr{UInt8}(x + 38) + f === :sps_num_palette_predictor_initializers_minus1 && return Ptr{UInt8}(x + 39) + f === :conf_win_left_offset && return Ptr{UInt32}(x + 40) + f === :conf_win_right_offset && return Ptr{UInt32}(x + 44) + f === :conf_win_top_offset && return Ptr{UInt32}(x + 48) + f === :conf_win_bottom_offset && return Ptr{UInt32}(x + 52) + f === :pProfileTierLevel && return Ptr{Ptr{StdVideoH265ProfileTierLevel}}(x + 56) + f === :pDecPicBufMgr && return Ptr{Ptr{StdVideoH265DecPicBufMgr}}(x + 64) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 72) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 80) + f === :pLongTermRefPicsSps && return Ptr{Ptr{StdVideoH265LongTermRefPicsSps}}(x + 88) + f === :pSequenceParameterSetVui && return Ptr{Ptr{StdVideoH265SequenceParameterSetVui}}(x + 96) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 104) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265SequenceParameterSet, f::Symbol) + r = Ref{StdVideoH265SequenceParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265SequenceParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265SequenceParameterSet, private::Bool = false) + (:flags, :chroma_format_idc, :pic_width_in_luma_samples, :pic_height_in_luma_samples, :sps_video_parameter_set_id, :sps_max_sub_layers_minus1, :sps_seq_parameter_set_id, :bit_depth_luma_minus8, :bit_depth_chroma_minus8, :log2_max_pic_order_cnt_lsb_minus4, :log2_min_luma_coding_block_size_minus3, :log2_diff_max_min_luma_coding_block_size, :log2_min_luma_transform_block_size_minus2, :log2_diff_max_min_luma_transform_block_size, :max_transform_hierarchy_depth_inter, :max_transform_hierarchy_depth_intra, :num_short_term_ref_pic_sets, :num_long_term_ref_pics_sps, :pcm_sample_bit_depth_luma_minus1, :pcm_sample_bit_depth_chroma_minus1, :log2_min_pcm_luma_coding_block_size_minus3, :log2_diff_max_min_pcm_luma_coding_block_size, :reserved1, :reserved2, :palette_max_size, :delta_palette_max_predictor_size, :motion_vector_resolution_control_idc, :sps_num_palette_predictor_initializers_minus1, :conf_win_left_offset, :conf_win_right_offset, :conf_win_top_offset, :conf_win_bottom_offset, :pProfileTierLevel, :pDecPicBufMgr, :pScalingLists, :pShortTermRefPicSet, :pLongTermRefPicsSps, :pSequenceParameterSetVui, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265SequenceParameterSet(flags::StdVideoH265SpsFlags, chroma_format_idc::StdVideoH265ChromaFormatIdc, 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, bit_depth_luma_minus8::UInt8, bit_depth_chroma_minus8::UInt8, log2_max_pic_order_cnt_lsb_minus4::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, reserved1::UInt8, reserved2::UInt8, palette_max_size::UInt8, delta_palette_max_predictor_size::UInt8, motion_vector_resolution_control_idc::UInt8, sps_num_palette_predictor_initializers_minus1::UInt8, conf_win_left_offset::UInt32, conf_win_right_offset::UInt32, conf_win_top_offset::UInt32, conf_win_bottom_offset::UInt32, pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel}, pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr}, pScalingLists::Ptr{StdVideoH265ScalingLists}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps}, pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265SequenceParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265SequenceParameterSet}, ref) + ptr.flags = flags + ptr.chroma_format_idc = chroma_format_idc + ptr.pic_width_in_luma_samples = pic_width_in_luma_samples + ptr.pic_height_in_luma_samples = pic_height_in_luma_samples + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.sps_max_sub_layers_minus1 = sps_max_sub_layers_minus1 + ptr.sps_seq_parameter_set_id = sps_seq_parameter_set_id + ptr.bit_depth_luma_minus8 = bit_depth_luma_minus8 + ptr.bit_depth_chroma_minus8 = bit_depth_chroma_minus8 + ptr.log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4 + ptr.log2_min_luma_coding_block_size_minus3 = log2_min_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_luma_coding_block_size = log2_diff_max_min_luma_coding_block_size + ptr.log2_min_luma_transform_block_size_minus2 = log2_min_luma_transform_block_size_minus2 + ptr.log2_diff_max_min_luma_transform_block_size = log2_diff_max_min_luma_transform_block_size + ptr.max_transform_hierarchy_depth_inter = max_transform_hierarchy_depth_inter + ptr.max_transform_hierarchy_depth_intra = max_transform_hierarchy_depth_intra + ptr.num_short_term_ref_pic_sets = num_short_term_ref_pic_sets + ptr.num_long_term_ref_pics_sps = num_long_term_ref_pics_sps + ptr.pcm_sample_bit_depth_luma_minus1 = pcm_sample_bit_depth_luma_minus1 + ptr.pcm_sample_bit_depth_chroma_minus1 = pcm_sample_bit_depth_chroma_minus1 + ptr.log2_min_pcm_luma_coding_block_size_minus3 = log2_min_pcm_luma_coding_block_size_minus3 + ptr.log2_diff_max_min_pcm_luma_coding_block_size = log2_diff_max_min_pcm_luma_coding_block_size + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.palette_max_size = palette_max_size + ptr.delta_palette_max_predictor_size = delta_palette_max_predictor_size + ptr.motion_vector_resolution_control_idc = motion_vector_resolution_control_idc + ptr.sps_num_palette_predictor_initializers_minus1 = sps_num_palette_predictor_initializers_minus1 + ptr.conf_win_left_offset = conf_win_left_offset + ptr.conf_win_right_offset = conf_win_right_offset + ptr.conf_win_top_offset = conf_win_top_offset + ptr.conf_win_bottom_offset = conf_win_bottom_offset + ptr.pProfileTierLevel = pProfileTierLevel + ptr.pDecPicBufMgr = pDecPicBufMgr + ptr.pScalingLists = pScalingLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPicsSps = pLongTermRefPicsSps + ptr.pSequenceParameterSetVui = pSequenceParameterSetVui + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoH265PpsFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) + f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) + f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) + f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) + f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) + f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) + f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) + f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) + f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) + f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) + f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) + f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) + f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) + f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) + f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) + f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) + f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) + r = Ref{StdVideoH265PpsFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoH265PpsFlags, private::Bool = false) + (:dependent_slice_segments_enabled_flag, :output_flag_present_flag, :sign_data_hiding_enabled_flag, :cabac_init_present_flag, :constrained_intra_pred_flag, :transform_skip_enabled_flag, :cu_qp_delta_enabled_flag, :pps_slice_chroma_qp_offsets_present_flag, :weighted_pred_flag, :weighted_bipred_flag, :transquant_bypass_enabled_flag, :tiles_enabled_flag, :entropy_coding_sync_enabled_flag, :uniform_spacing_flag, :loop_filter_across_tiles_enabled_flag, :pps_loop_filter_across_slices_enabled_flag, :deblocking_filter_control_present_flag, :deblocking_filter_override_enabled_flag, :pps_deblocking_filter_disabled_flag, :pps_scaling_list_data_present_flag, :lists_modification_present_flag, :slice_segment_header_extension_present_flag, :pps_extension_present_flag, :cross_component_prediction_enabled_flag, :chroma_qp_offset_list_enabled_flag, :pps_curr_pic_ref_enabled_flag, :residual_adaptive_colour_transform_enabled_flag, :pps_slice_act_qp_offsets_present_flag, :pps_palette_predictor_initializers_present_flag, :monochrome_palette_flag, :pps_range_extension_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) + ref = Ref{StdVideoH265PpsFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) + ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag + ptr.output_flag_present_flag = output_flag_present_flag + ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag + ptr.cabac_init_present_flag = cabac_init_present_flag + ptr.constrained_intra_pred_flag = constrained_intra_pred_flag + ptr.transform_skip_enabled_flag = transform_skip_enabled_flag + ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag + ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag + ptr.weighted_pred_flag = weighted_pred_flag + ptr.weighted_bipred_flag = weighted_bipred_flag + ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag + ptr.tiles_enabled_flag = tiles_enabled_flag + ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag + ptr.uniform_spacing_flag = uniform_spacing_flag + ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag + ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag + ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag + ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag + ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag + ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag + ptr.lists_modification_present_flag = lists_modification_present_flag + ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag + ptr.pps_extension_present_flag = pps_extension_present_flag + ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag + ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag + ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag + ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag + ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag + ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag + ptr.monochrome_palette_flag = monochrome_palette_flag + ptr.pps_range_extension_flag = pps_range_extension_flag + ref[] +end + +struct StdVideoH265PictureParameterSet + data::NTuple{144, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol) + f === :flags && return Ptr{StdVideoH265PpsFlags}(x + 0) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :num_extra_slice_header_bits && return Ptr{UInt8}(x + 7) + f === :num_ref_idx_l0_default_active_minus1 && return Ptr{UInt8}(x + 8) + f === :num_ref_idx_l1_default_active_minus1 && return Ptr{UInt8}(x + 9) + f === :init_qp_minus26 && return Ptr{Int8}(x + 10) + f === :diff_cu_qp_delta_depth && return Ptr{UInt8}(x + 11) + f === :pps_cb_qp_offset && return Ptr{Int8}(x + 12) + f === :pps_cr_qp_offset && return Ptr{Int8}(x + 13) + f === :pps_beta_offset_div2 && return Ptr{Int8}(x + 14) + f === :pps_tc_offset_div2 && return Ptr{Int8}(x + 15) + f === :log2_parallel_merge_level_minus2 && return Ptr{UInt8}(x + 16) + f === :log2_max_transform_skip_block_size_minus2 && return Ptr{UInt8}(x + 17) + f === :diff_cu_chroma_qp_offset_depth && return Ptr{UInt8}(x + 18) + f === :chroma_qp_offset_list_len_minus1 && return Ptr{UInt8}(x + 19) + f === :cb_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 20) + f === :cr_qp_offset_list && return Ptr{NTuple{6, Int8}}(x + 26) + f === :log2_sao_offset_scale_luma && return Ptr{UInt8}(x + 32) + f === :log2_sao_offset_scale_chroma && return Ptr{UInt8}(x + 33) + f === :pps_act_y_qp_offset_plus5 && return Ptr{Int8}(x + 34) + f === :pps_act_cb_qp_offset_plus5 && return Ptr{Int8}(x + 35) + f === :pps_act_cr_qp_offset_plus3 && return Ptr{Int8}(x + 36) + f === :pps_num_palette_predictor_initializers && return Ptr{UInt8}(x + 37) + f === :luma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 38) + f === :chroma_bit_depth_entry_minus8 && return Ptr{UInt8}(x + 39) + f === :num_tile_columns_minus1 && return Ptr{UInt8}(x + 40) + f === :num_tile_rows_minus1 && return Ptr{UInt8}(x + 41) + f === :reserved1 && return Ptr{UInt8}(x + 42) + f === :reserved2 && return Ptr{UInt8}(x + 43) + f === :column_width_minus1 && return Ptr{NTuple{19, UInt16}}(x + 44) + f === :row_height_minus1 && return Ptr{NTuple{21, UInt16}}(x + 82) + f === :reserved3 && return Ptr{UInt32}(x + 124) + f === :pScalingLists && return Ptr{Ptr{StdVideoH265ScalingLists}}(x + 128) + f === :pPredictorPaletteEntries && return Ptr{Ptr{StdVideoH265PredictorPaletteEntries}}(x + 136) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoH265PictureParameterSet, f::Symbol) + r = Ref{StdVideoH265PictureParameterSet}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoH265PictureParameterSet}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoH265PictureParameterSet, private::Bool = false) + (:flags, :pps_pic_parameter_set_id, :pps_seq_parameter_set_id, :sps_video_parameter_set_id, :num_extra_slice_header_bits, :num_ref_idx_l0_default_active_minus1, :num_ref_idx_l1_default_active_minus1, :init_qp_minus26, :diff_cu_qp_delta_depth, :pps_cb_qp_offset, :pps_cr_qp_offset, :pps_beta_offset_div2, :pps_tc_offset_div2, :log2_parallel_merge_level_minus2, :log2_max_transform_skip_block_size_minus2, :diff_cu_chroma_qp_offset_depth, :chroma_qp_offset_list_len_minus1, :cb_qp_offset_list, :cr_qp_offset_list, :log2_sao_offset_scale_luma, :log2_sao_offset_scale_chroma, :pps_act_y_qp_offset_plus5, :pps_act_cb_qp_offset_plus5, :pps_act_cr_qp_offset_plus3, :pps_num_palette_predictor_initializers, :luma_bit_depth_entry_minus8, :chroma_bit_depth_entry_minus8, :num_tile_columns_minus1, :num_tile_rows_minus1, :reserved1, :reserved2, :column_width_minus1, :row_height_minus1, :reserved3, :pScalingLists, :pPredictorPaletteEntries, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoH265PictureParameterSet(flags::StdVideoH265PpsFlags, pps_pic_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, sps_video_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, pps_beta_offset_div2::Int8, pps_tc_offset_div2::Int8, log2_parallel_merge_level_minus2::UInt8, 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_plus3::Int8, pps_num_palette_predictor_initializers::UInt8, luma_bit_depth_entry_minus8::UInt8, chroma_bit_depth_entry_minus8::UInt8, num_tile_columns_minus1::UInt8, num_tile_rows_minus1::UInt8, reserved1::UInt8, reserved2::UInt8, column_width_minus1::NTuple{19, UInt16}, row_height_minus1::NTuple{21, UInt16}, reserved3::UInt32, pScalingLists::Ptr{StdVideoH265ScalingLists}, pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries}) + ref = Ref{StdVideoH265PictureParameterSet}() + ptr = Base.unsafe_convert(Ptr{StdVideoH265PictureParameterSet}, ref) + ptr.flags = flags + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.num_extra_slice_header_bits = num_extra_slice_header_bits + ptr.num_ref_idx_l0_default_active_minus1 = num_ref_idx_l0_default_active_minus1 + ptr.num_ref_idx_l1_default_active_minus1 = num_ref_idx_l1_default_active_minus1 + ptr.init_qp_minus26 = init_qp_minus26 + ptr.diff_cu_qp_delta_depth = diff_cu_qp_delta_depth + ptr.pps_cb_qp_offset = pps_cb_qp_offset + ptr.pps_cr_qp_offset = pps_cr_qp_offset + ptr.pps_beta_offset_div2 = pps_beta_offset_div2 + ptr.pps_tc_offset_div2 = pps_tc_offset_div2 + ptr.log2_parallel_merge_level_minus2 = log2_parallel_merge_level_minus2 + ptr.log2_max_transform_skip_block_size_minus2 = log2_max_transform_skip_block_size_minus2 + ptr.diff_cu_chroma_qp_offset_depth = diff_cu_chroma_qp_offset_depth + ptr.chroma_qp_offset_list_len_minus1 = chroma_qp_offset_list_len_minus1 + ptr.cb_qp_offset_list = cb_qp_offset_list + ptr.cr_qp_offset_list = cr_qp_offset_list + ptr.log2_sao_offset_scale_luma = log2_sao_offset_scale_luma + ptr.log2_sao_offset_scale_chroma = log2_sao_offset_scale_chroma + ptr.pps_act_y_qp_offset_plus5 = pps_act_y_qp_offset_plus5 + ptr.pps_act_cb_qp_offset_plus5 = pps_act_cb_qp_offset_plus5 + ptr.pps_act_cr_qp_offset_plus3 = pps_act_cr_qp_offset_plus3 + ptr.pps_num_palette_predictor_initializers = pps_num_palette_predictor_initializers + ptr.luma_bit_depth_entry_minus8 = luma_bit_depth_entry_minus8 + ptr.chroma_bit_depth_entry_minus8 = chroma_bit_depth_entry_minus8 + ptr.num_tile_columns_minus1 = num_tile_columns_minus1 + ptr.num_tile_rows_minus1 = num_tile_rows_minus1 + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.column_width_minus1 = column_width_minus1 + ptr.row_height_minus1 = row_height_minus1 + ptr.reserved3 = reserved3 + ptr.pScalingLists = pScalingLists + ptr.pPredictorPaletteEntries = pPredictorPaletteEntries + ref[] +end + +struct StdVideoEncodeH265WeightTableFlags + luma_weight_l0_flag::UInt16 + chroma_weight_l0_flag::UInt16 + luma_weight_l1_flag::UInt16 + chroma_weight_l1_flag::UInt16 +end + +struct StdVideoEncodeH265WeightTable + flags::StdVideoEncodeH265WeightTableFlags + luma_log2_weight_denom::UInt8 + delta_chroma_log2_weight_denom::Int8 + delta_luma_weight_l0::NTuple{15, Int8} + luma_offset_l0::NTuple{15, Int8} + delta_chroma_weight_l0::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l0::NTuple{15, NTuple{2, Int8}} + delta_luma_weight_l1::NTuple{15, Int8} + luma_offset_l1::NTuple{15, Int8} + delta_chroma_weight_l1::NTuple{15, NTuple{2, Int8}} + delta_chroma_offset_l1::NTuple{15, NTuple{2, Int8}} +end + +struct StdVideoEncodeH265SliceSegmentHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol) + f === :first_slice_segment_in_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :dependent_slice_segment_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :slice_sao_luma_flag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :slice_sao_chroma_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :num_ref_idx_active_override_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :mvd_l1_zero_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :cabac_init_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :cu_chroma_qp_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :deblocking_filter_override_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :slice_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) + f === :collocated_from_l0_flag && return (Ptr{UInt32}(x + 0), 10, 1) + f === :slice_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 12, 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeaderFlags, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeaderFlags, private::Bool = false) + (:first_slice_segment_in_pic_flag, :dependent_slice_segment_flag, :slice_sao_luma_flag, :slice_sao_chroma_flag, :num_ref_idx_active_override_flag, :mvd_l1_zero_flag, :cabac_init_flag, :cu_chroma_qp_offset_enabled_flag, :deblocking_filter_override_flag, :slice_deblocking_filter_disabled_flag, :collocated_from_l0_flag, :slice_loop_filter_across_slices_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeaderFlags(first_slice_segment_in_pic_flag::UInt32, dependent_slice_segment_flag::UInt32, slice_sao_luma_flag::UInt32, slice_sao_chroma_flag::UInt32, num_ref_idx_active_override_flag::UInt32, mvd_l1_zero_flag::UInt32, cabac_init_flag::UInt32, cu_chroma_qp_offset_enabled_flag::UInt32, deblocking_filter_override_flag::UInt32, slice_deblocking_filter_disabled_flag::UInt32, collocated_from_l0_flag::UInt32, slice_loop_filter_across_slices_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265SliceSegmentHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}, ref) + ptr.first_slice_segment_in_pic_flag = first_slice_segment_in_pic_flag + ptr.dependent_slice_segment_flag = dependent_slice_segment_flag + ptr.slice_sao_luma_flag = slice_sao_luma_flag + ptr.slice_sao_chroma_flag = slice_sao_chroma_flag + ptr.num_ref_idx_active_override_flag = num_ref_idx_active_override_flag + ptr.mvd_l1_zero_flag = mvd_l1_zero_flag + ptr.cabac_init_flag = cabac_init_flag + ptr.cu_chroma_qp_offset_enabled_flag = cu_chroma_qp_offset_enabled_flag + ptr.deblocking_filter_override_flag = deblocking_filter_override_flag + ptr.slice_deblocking_filter_disabled_flag = slice_deblocking_filter_disabled_flag + ptr.collocated_from_l0_flag = collocated_from_l0_flag + ptr.slice_loop_filter_across_slices_enabled_flag = slice_loop_filter_across_slices_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265SliceSegmentHeader + data::NTuple{32, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265SliceSegmentHeaderFlags}(x + 0) + f === :slice_type && return Ptr{StdVideoH265SliceType}(x + 4) + f === :slice_segment_address && return Ptr{UInt32}(x + 8) + f === :collocated_ref_idx && return Ptr{UInt8}(x + 12) + f === :MaxNumMergeCand && return Ptr{UInt8}(x + 13) + f === :slice_cb_qp_offset && return Ptr{Int8}(x + 14) + f === :slice_cr_qp_offset && return Ptr{Int8}(x + 15) + f === :slice_beta_offset_div2 && return Ptr{Int8}(x + 16) + f === :slice_tc_offset_div2 && return Ptr{Int8}(x + 17) + f === :slice_act_y_qp_offset && return Ptr{Int8}(x + 18) + f === :slice_act_cb_qp_offset && return Ptr{Int8}(x + 19) + f === :slice_act_cr_qp_offset && return Ptr{Int8}(x + 20) + f === :slice_qp_delta && return Ptr{Int8}(x + 21) + f === :reserved1 && return Ptr{UInt16}(x + 22) + f === :pWeightTable && return Ptr{Ptr{StdVideoEncodeH265WeightTable}}(x + 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265SliceSegmentHeader, f::Symbol) + r = Ref{StdVideoEncodeH265SliceSegmentHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265SliceSegmentHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265SliceSegmentHeader, private::Bool = false) + (:flags, :slice_type, :slice_segment_address, :collocated_ref_idx, :MaxNumMergeCand, :slice_cb_qp_offset, :slice_cr_qp_offset, :slice_beta_offset_div2, :slice_tc_offset_div2, :slice_act_y_qp_offset, :slice_act_cb_qp_offset, :slice_act_cr_qp_offset, :slice_qp_delta, :reserved1, :pWeightTable, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265SliceSegmentHeader(flags::StdVideoEncodeH265SliceSegmentHeaderFlags, slice_type::StdVideoH265SliceType, slice_segment_address::UInt32, collocated_ref_idx::UInt8, MaxNumMergeCand::UInt8, slice_cb_qp_offset::Int8, slice_cr_qp_offset::Int8, slice_beta_offset_div2::Int8, slice_tc_offset_div2::Int8, slice_act_y_qp_offset::Int8, slice_act_cb_qp_offset::Int8, slice_act_cr_qp_offset::Int8, slice_qp_delta::Int8, reserved1::UInt16, pWeightTable::Ptr{StdVideoEncodeH265WeightTable}) + ref = Ref{StdVideoEncodeH265SliceSegmentHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265SliceSegmentHeader}, ref) + ptr.flags = flags + ptr.slice_type = slice_type + ptr.slice_segment_address = slice_segment_address + ptr.collocated_ref_idx = collocated_ref_idx + ptr.MaxNumMergeCand = MaxNumMergeCand + ptr.slice_cb_qp_offset = slice_cb_qp_offset + ptr.slice_cr_qp_offset = slice_cr_qp_offset + ptr.slice_beta_offset_div2 = slice_beta_offset_div2 + ptr.slice_tc_offset_div2 = slice_tc_offset_div2 + ptr.slice_act_y_qp_offset = slice_act_y_qp_offset + ptr.slice_act_cb_qp_offset = slice_act_cb_qp_offset + ptr.slice_act_cr_qp_offset = slice_act_cr_qp_offset + ptr.slice_qp_delta = slice_qp_delta + ptr.reserved1 = reserved1 + ptr.pWeightTable = pWeightTable + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol) + f === :ref_pic_list_modification_flag_l0 && return (Ptr{UInt32}(x + 0), 0, 1) + f === :ref_pic_list_modification_flag_l1 && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfoFlags, private::Bool = false) + (:ref_pic_list_modification_flag_l0, :ref_pic_list_modification_flag_l1, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfoFlags(ref_pic_list_modification_flag_l0::UInt32, ref_pic_list_modification_flag_l1::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceListsInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}, ref) + ptr.ref_pic_list_modification_flag_l0 = ref_pic_list_modification_flag_l0 + ptr.ref_pic_list_modification_flag_l1 = ref_pic_list_modification_flag_l1 + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceListsInfo + data::NTuple{68, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceListsInfoFlags}(x + 0) + f === :num_ref_idx_l0_active_minus1 && return Ptr{UInt8}(x + 4) + f === :num_ref_idx_l1_active_minus1 && return Ptr{UInt8}(x + 5) + f === :RefPicList0 && return Ptr{NTuple{15, UInt8}}(x + 6) + f === :RefPicList1 && return Ptr{NTuple{15, UInt8}}(x + 21) + f === :list_entry_l0 && return Ptr{NTuple{15, UInt8}}(x + 36) + f === :list_entry_l1 && return Ptr{NTuple{15, UInt8}}(x + 51) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceListsInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceListsInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceListsInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceListsInfo, private::Bool = false) + (:flags, :num_ref_idx_l0_active_minus1, :num_ref_idx_l1_active_minus1, :RefPicList0, :RefPicList1, :list_entry_l0, :list_entry_l1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceListsInfo(flags::StdVideoEncodeH265ReferenceListsInfoFlags, num_ref_idx_l0_active_minus1::UInt8, num_ref_idx_l1_active_minus1::UInt8, RefPicList0::NTuple{15, UInt8}, RefPicList1::NTuple{15, UInt8}, list_entry_l0::NTuple{15, UInt8}, list_entry_l1::NTuple{15, UInt8}) + ref = Ref{StdVideoEncodeH265ReferenceListsInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceListsInfo}, ref) + ptr.flags = flags + ptr.num_ref_idx_l0_active_minus1 = num_ref_idx_l0_active_minus1 + ptr.num_ref_idx_l1_active_minus1 = num_ref_idx_l1_active_minus1 + ptr.RefPicList0 = RefPicList0 + ptr.RefPicList1 = RefPicList1 + ptr.list_entry_l0 = list_entry_l0 + ptr.list_entry_l1 = list_entry_l1 + ref[] +end + +struct StdVideoEncodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol) + f === :is_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :discardable_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :cross_layer_bla_flag && return (Ptr{UInt32}(x + 0), 4, 1) + f === :pic_output_flag && return (Ptr{UInt32}(x + 0), 5, 1) + f === :no_output_of_prior_pics_flag && return (Ptr{UInt32}(x + 0), 6, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :slice_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 9, 23) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfoFlags, private::Bool = false) + (:is_reference, :IrapPicFlag, :used_for_long_term_reference, :discardable_flag, :cross_layer_bla_flag, :pic_output_flag, :no_output_of_prior_pics_flag, :short_term_ref_pic_set_sps_flag, :slice_temporal_mvp_enabled_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfoFlags(is_reference::UInt32, IrapPicFlag::UInt32, used_for_long_term_reference::UInt32, discardable_flag::UInt32, cross_layer_bla_flag::UInt32, pic_output_flag::UInt32, no_output_of_prior_pics_flag::UInt32, short_term_ref_pic_set_sps_flag::UInt32, slice_temporal_mvp_enabled_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfoFlags}, ref) + ptr.is_reference = is_reference + ptr.IrapPicFlag = IrapPicFlag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.discardable_flag = discardable_flag + ptr.cross_layer_bla_flag = cross_layer_bla_flag + ptr.pic_output_flag = pic_output_flag + ptr.no_output_of_prior_pics_flag = no_output_of_prior_pics_flag + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ptr.slice_temporal_mvp_enabled_flag = slice_temporal_mvp_enabled_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265LongTermRefPics + num_long_term_sps::UInt8 + num_long_term_pics::UInt8 + lt_idx_sps::NTuple{32, UInt8} + poc_lsb_lt::NTuple{16, UInt8} + used_by_curr_pic_lt_flag::UInt16 + delta_poc_msb_present_flag::NTuple{48, UInt8} + delta_poc_msb_cycle_lt::NTuple{48, UInt8} +end + +struct StdVideoEncodeH265PictureInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265PictureInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 8) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 9) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 10) + f === :short_term_ref_pic_set_idx && return Ptr{UInt8}(x + 11) + f === :PicOrderCntVal && return Ptr{Int32}(x + 12) + f === :TemporalId && return Ptr{UInt8}(x + 16) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 17) + f === :pRefLists && return Ptr{Ptr{StdVideoEncodeH265ReferenceListsInfo}}(x + 24) + f === :pShortTermRefPicSet && return Ptr{Ptr{StdVideoH265ShortTermRefPicSet}}(x + 32) + f === :pLongTermRefPics && return Ptr{Ptr{StdVideoEncodeH265LongTermRefPics}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265PictureInfo, private::Bool = false) + (:flags, :pic_type, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :short_term_ref_pic_set_idx, :PicOrderCntVal, :TemporalId, :reserved1, :pRefLists, :pShortTermRefPicSet, :pLongTermRefPics, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265PictureInfo(flags::StdVideoEncodeH265PictureInfoFlags, pic_type::StdVideoH265PictureType, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, short_term_ref_pic_set_idx::UInt8, PicOrderCntVal::Int32, TemporalId::UInt8, reserved1::NTuple{7, UInt8}, pRefLists::Ptr{StdVideoEncodeH265ReferenceListsInfo}, pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet}, pLongTermRefPics::Ptr{StdVideoEncodeH265LongTermRefPics}) + ref = Ref{StdVideoEncodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.short_term_ref_pic_set_idx = short_term_ref_pic_set_idx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ptr.reserved1 = reserved1 + ptr.pRefLists = pRefLists + ptr.pShortTermRefPicSet = pShortTermRefPicSet + ptr.pLongTermRefPics = pLongTermRefPics + ref[] +end + +struct StdVideoEncodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeH265ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeH265ReferenceInfoFlags}(x + 0) + f === :pic_type && return Ptr{StdVideoH265PictureType}(x + 4) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :TemporalId && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeH265ReferenceInfo, private::Bool = false) + (:flags, :pic_type, :PicOrderCntVal, :TemporalId, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeH265ReferenceInfo(flags::StdVideoEncodeH265ReferenceInfoFlags, pic_type::StdVideoH265PictureType, PicOrderCntVal::Int32, TemporalId::UInt8) + ref = Ref{StdVideoEncodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.pic_type = pic_type + ptr.PicOrderCntVal = PicOrderCntVal + ptr.TemporalId = TemporalId + ref[] +end + +@cenum VkVideoEncodeH265CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 32 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 64 + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 128 + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 256 + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 512 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 1024 + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 2048 + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 4096 + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 8192 + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 16384 + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 32768 + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 65536 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 131072 + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 262144 + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 524288 + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 1048576 + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265CtbSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265CtbSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265TransformBlockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeH265RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 1 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 16 + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeH265RateControlFlagsKHR = VkFlags + +struct VkVideoEncodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265CapabilityFlagsKHR + maxLevelIdc::StdVideoH265LevelIdc + maxSliceSegmentCount::UInt32 + maxTiles::VkExtent2D + ctbSizes::VkVideoEncodeH265CtbSizeFlagsKHR + transformBlockSizes::VkVideoEncodeH265TransformBlockSizeFlagsKHR + maxPPictureL0ReferenceCount::UInt32 + maxBPictureL0ReferenceCount::UInt32 + maxL1ReferenceCount::UInt32 + maxSubLayerCount::UInt32 + expectDyadicTemporalSubLayerPattern::VkBool32 + minQp::Int32 + maxQp::Int32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeH265StdFlagsKHR +end + +struct VkVideoEncodeH265SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevelIdc::VkBool32 + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoEncodeH265QpKHR + qpI::Int32 + qpP::Int32 + qpB::Int32 +end + +struct VkVideoEncodeH265QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeH265RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredIdrPeriod::UInt32 + preferredConsecutiveBFrameCount::UInt32 + preferredSubLayerCount::UInt32 + preferredConstantQp::VkVideoEncodeH265QpKHR + preferredMaxL0ReferenceCount::UInt32 + preferredMaxL1ReferenceCount::UInt32 +end + +struct VkVideoEncodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoEncodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoEncodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoEncodeH265SessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + writeStdVPS::VkBool32 + writeStdSPS::VkBool32 + writeStdPPS::VkBool32 + stdVPSId::UInt32 + stdSPSId::UInt32 + stdPPSId::UInt32 +end + +struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasStdVPSOverrides::VkBool32 + hasStdSPSOverrides::VkBool32 + hasStdPPSOverrides::VkBool32 +end + +struct VkVideoEncodeH265NaluSliceSegmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + constantQp::Int32 + pStdSliceSegmentHeader::Ptr{StdVideoEncodeH265SliceSegmentHeader} +end + +struct VkVideoEncodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + naluSliceSegmentEntryCount::UInt32 + pNaluSliceSegmentEntries::Ptr{VkVideoEncodeH265NaluSliceSegmentInfoKHR} + pStdPictureInfo::Ptr{StdVideoEncodeH265PictureInfo} +end + +struct VkVideoEncodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeH265ReferenceInfo} +end + +struct VkVideoEncodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoEncodeH265RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeH265RateControlFlagsKHR + gopFrameCount::UInt32 + idrPeriod::UInt32 + consecutiveBFrameCount::UInt32 + subLayerCount::UInt32 +end + +struct VkVideoEncodeH265FrameSizeKHR + frameISize::UInt32 + framePSize::UInt32 + frameBSize::UInt32 +end + +struct VkVideoEncodeH265RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQp::VkBool32 + minQp::VkVideoEncodeH265QpKHR + useMaxQp::VkBool32 + maxQp::VkVideoEncodeH265QpKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeH265FrameSizeKHR +end + +struct VkVideoEncodeH265GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingI::UInt32 + gopRemainingP::UInt32 + gopRemainingB::UInt32 +end + +@cenum StdVideoDecodeH264FieldOrderCount::UInt32 begin + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 2147483647 + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 2147483647 +end + +struct StdVideoDecodeH264PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol) + f === :field_pic_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :is_intra && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 2, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :is_reference && return (Ptr{UInt32}(x + 0), 4, 1) + f === :complementary_field_pair && return (Ptr{UInt32}(x + 0), 5, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfoFlags, private::Bool = false) + (:field_pic_flag, :is_intra, :IdrPicFlag, :bottom_field_flag, :is_reference, :complementary_field_pair, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfoFlags(field_pic_flag::UInt32, is_intra::UInt32, IdrPicFlag::UInt32, bottom_field_flag::UInt32, is_reference::UInt32, complementary_field_pair::UInt32) + ref = Ref{StdVideoDecodeH264PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfoFlags}, ref) + ptr.field_pic_flag = field_pic_flag + ptr.is_intra = is_intra + ptr.IdrPicFlag = IdrPicFlag + ptr.bottom_field_flag = bottom_field_flag + ptr.is_reference = is_reference + ptr.complementary_field_pair = complementary_field_pair + ref[] +end + +struct StdVideoDecodeH264PictureInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264PictureInfoFlags}(x + 0) + f === :seq_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pic_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :reserved1 && return Ptr{UInt8}(x + 6) + f === :reserved2 && return Ptr{UInt8}(x + 7) + f === :frame_num && return Ptr{UInt16}(x + 8) + f === :idr_pic_id && return Ptr{UInt16}(x + 10) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH264PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264PictureInfo, private::Bool = false) + (:flags, :seq_parameter_set_id, :pic_parameter_set_id, :reserved1, :reserved2, :frame_num, :idr_pic_id, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264PictureInfo(flags::StdVideoDecodeH264PictureInfoFlags, seq_parameter_set_id::UInt8, pic_parameter_set_id::UInt8, reserved1::UInt8, reserved2::UInt8, frame_num::UInt16, idr_pic_id::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264PictureInfo}, ref) + ptr.flags = flags + ptr.seq_parameter_set_id = seq_parameter_set_id + ptr.pic_parameter_set_id = pic_parameter_set_id + ptr.reserved1 = reserved1 + ptr.reserved2 = reserved2 + ptr.frame_num = frame_num + ptr.idr_pic_id = idr_pic_id + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +struct StdVideoDecodeH264ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol) + f === :top_field_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :bottom_field_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :is_non_existing && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfoFlags, private::Bool = false) + (:top_field_flag, :bottom_field_flag, :used_for_long_term_reference, :is_non_existing, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfoFlags(top_field_flag::UInt32, bottom_field_flag::UInt32, used_for_long_term_reference::UInt32, is_non_existing::UInt32) + ref = Ref{StdVideoDecodeH264ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfoFlags}, ref) + ptr.top_field_flag = top_field_flag + ptr.bottom_field_flag = bottom_field_flag + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.is_non_existing = is_non_existing + ref[] +end + +struct StdVideoDecodeH264ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH264ReferenceInfoFlags}(x + 0) + f === :FrameNum && return Ptr{UInt16}(x + 4) + f === :reserved && return Ptr{UInt16}(x + 6) + f === :PicOrderCnt && return Ptr{NTuple{2, Int32}}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH264ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH264ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH264ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH264ReferenceInfo, private::Bool = false) + (:flags, :FrameNum, :reserved, :PicOrderCnt, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH264ReferenceInfo(flags::StdVideoDecodeH264ReferenceInfoFlags, FrameNum::UInt16, reserved::UInt16, PicOrderCnt::NTuple{2, Int32}) + ref = Ref{StdVideoDecodeH264ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH264ReferenceInfo}, ref) + ptr.flags = flags + ptr.FrameNum = FrameNum + ptr.reserved = reserved + ptr.PicOrderCnt = PicOrderCnt + ref[] +end + +@cenum VkVideoDecodeH264PictureLayoutFlagBitsKHR::UInt32 begin + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 1 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 2 + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoDecodeH264PictureLayoutFlagsKHR = VkFlags + +struct VkVideoDecodeH264ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH264ProfileIdc + pictureLayout::VkVideoDecodeH264PictureLayoutFlagBitsKHR +end + +struct VkVideoDecodeH264CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH264LevelIdc + fieldOffsetGranularity::VkOffset2D +end + +struct VkVideoDecodeH264SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH264SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH264SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH264PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} + sliceCount::UInt32 + pSliceOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH264DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} +end + +const VkRenderingFlagsKHR = VkRenderingFlags + +const VkRenderingFlagBitsKHR = VkRenderingFlagBits + +const VkRenderingInfoKHR = VkRenderingInfo + +const VkRenderingAttachmentInfoKHR = VkRenderingAttachmentInfo + +const VkPipelineRenderingCreateInfoKHR = VkPipelineRenderingCreateInfo + +const VkPhysicalDeviceDynamicRenderingFeaturesKHR = VkPhysicalDeviceDynamicRenderingFeatures + +const VkCommandBufferInheritanceRenderingInfoKHR = VkCommandBufferInheritanceRenderingInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderingKHR +const PFN_vkCmdBeginRenderingKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderingKHR +const PFN_vkCmdEndRenderingKHR = Ptr{Cvoid} + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo) + ccall((:vkCmdBeginRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInfo}), commandBuffer, pRenderingInfo) +end + +function vkCmdEndRenderingKHR(commandBuffer) + ccall((:vkCmdEndRenderingKHR, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndRenderingKHR(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +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 vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fptr) + ccall(fptr, 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 vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fptr) + ccall(fptr, 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 vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, 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 + +function vkTrimCommandPoolKHR(device, commandPool, flags, fptr) + ccall(fptr, 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 + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fptr) + ccall(fptr, 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 vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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 vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fptr) + ccall(fptr, 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 vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fptr) + ccall(fptr, 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 vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +const VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorProperties + +# 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 vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fptr) + ccall(fptr, 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 vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fptr) + ccall(fptr, 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 vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fptr) + ccall(fptr, 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 vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fptr) + ccall(fptr, 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 vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fptr) + ccall(fptr, 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 vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fptr) + ccall(fptr, 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 vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fptr) + ccall(fptr, 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 vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fptr) + ccall(fptr, 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 vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fptr) + ccall(fptr, 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 + +function vkGetSwapchainStatusKHR(device, swapchain, fptr) + ccall(fptr, 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 + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fptr) + ccall(fptr, 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 vkImportFenceFdKHR(device, pImportFenceFdInfo, fptr) + ccall(fptr, 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 vkGetFenceFdKHR(device, pGetFdInfo, pFd, fptr) + ccall(fptr, 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_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 +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 + +function Base.propertynames(x::VkPerformanceCounterResultKHR, private::Bool = false) + (:int32, :int64, :uint32, :uint64, :float32, :float64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPerformanceCounterResultKHR = Union{Int32, Int64, UInt32, UInt64, Cfloat, Cdouble} + +function VkPerformanceCounterResultKHR(val::__U_VkPerformanceCounterResultKHR) + ref = Ref{VkPerformanceCounterResultKHR}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, ref) + if val isa Int32 + ptr.int32 = val + elseif val isa Int64 + ptr.int64 = val + elseif val isa UInt32 + ptr.uint32 = val + elseif val isa UInt64 + ptr.uint64 = val + elseif val isa Cfloat + ptr.float32 = val + elseif val isa Cdouble + ptr.float64 = val + end + ref[] +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 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fptr) + ccall(fptr, 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 vkAcquireProfilingLockKHR(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkReleaseProfilingLockKHR(device, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fptr) + ccall(fptr, 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 +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fptr) + ccall(fptr, 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 vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +struct VkPhysicalDeviceShaderBfloat16FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBFloat16Type::VkBool32 + shaderBFloat16DotProduct::VkBool32 + shaderBFloat16CooperativeMatrix::VkBool32 +end + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, 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 +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 vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fptr) + ccall(fptr, 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 vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fptr) + ccall(fptr, 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 vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fptr) + ccall(fptr, 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 vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 + +struct StdVideoDecodeH265PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) + f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) + f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfoFlags, private::Bool = false) + (:IrapPicFlag, :IdrPicFlag, :IsReference, :short_term_ref_pic_set_sps_flag, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) + ref = Ref{StdVideoDecodeH265PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) + ptr.IrapPicFlag = IrapPicFlag + ptr.IdrPicFlag = IdrPicFlag + ptr.IsReference = IsReference + ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag + ref[] +end + +struct StdVideoDecodeH265PictureInfo + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265PictureInfoFlags}(x + 0) + f === :sps_video_parameter_set_id && return Ptr{UInt8}(x + 4) + f === :pps_seq_parameter_set_id && return Ptr{UInt8}(x + 5) + f === :pps_pic_parameter_set_id && return Ptr{UInt8}(x + 6) + f === :NumDeltaPocsOfRefRpsIdx && return Ptr{UInt8}(x + 7) + f === :PicOrderCntVal && return Ptr{Int32}(x + 8) + f === :NumBitsForSTRefPicSetInSlice && return Ptr{UInt16}(x + 12) + f === :reserved && return Ptr{UInt16}(x + 14) + f === :RefPicSetStCurrBefore && return Ptr{NTuple{8, UInt8}}(x + 16) + f === :RefPicSetStCurrAfter && return Ptr{NTuple{8, UInt8}}(x + 24) + f === :RefPicSetLtCurr && return Ptr{NTuple{8, UInt8}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeH265PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265PictureInfo, private::Bool = false) + (:flags, :sps_video_parameter_set_id, :pps_seq_parameter_set_id, :pps_pic_parameter_set_id, :NumDeltaPocsOfRefRpsIdx, :PicOrderCntVal, :NumBitsForSTRefPicSetInSlice, :reserved, :RefPicSetStCurrBefore, :RefPicSetStCurrAfter, :RefPicSetLtCurr, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265PictureInfo(flags::StdVideoDecodeH265PictureInfoFlags, sps_video_parameter_set_id::UInt8, pps_seq_parameter_set_id::UInt8, pps_pic_parameter_set_id::UInt8, NumDeltaPocsOfRefRpsIdx::UInt8, PicOrderCntVal::Int32, NumBitsForSTRefPicSetInSlice::UInt16, reserved::UInt16, RefPicSetStCurrBefore::NTuple{8, UInt8}, RefPicSetStCurrAfter::NTuple{8, UInt8}, RefPicSetLtCurr::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeH265PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfo}, ref) + ptr.flags = flags + ptr.sps_video_parameter_set_id = sps_video_parameter_set_id + ptr.pps_seq_parameter_set_id = pps_seq_parameter_set_id + ptr.pps_pic_parameter_set_id = pps_pic_parameter_set_id + ptr.NumDeltaPocsOfRefRpsIdx = NumDeltaPocsOfRefRpsIdx + ptr.PicOrderCntVal = PicOrderCntVal + ptr.NumBitsForSTRefPicSetInSlice = NumBitsForSTRefPicSetInSlice + ptr.reserved = reserved + ptr.RefPicSetStCurrBefore = RefPicSetStCurrBefore + ptr.RefPicSetStCurrAfter = RefPicSetStCurrAfter + ptr.RefPicSetLtCurr = RefPicSetLtCurr + ref[] +end + +struct StdVideoDecodeH265ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) + f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) + f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfoFlags, private::Bool = false) + (:used_for_long_term_reference, :unused_for_reference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) + ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) + ptr.used_for_long_term_reference = used_for_long_term_reference + ptr.unused_for_reference = unused_for_reference + ref[] +end + +struct StdVideoDecodeH265ReferenceInfo + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeH265ReferenceInfoFlags}(x + 0) + f === :PicOrderCntVal && return Ptr{Int32}(x + 4) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeH265ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeH265ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeH265ReferenceInfo, private::Bool = false) + (:flags, :PicOrderCntVal, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeH265ReferenceInfo(flags::StdVideoDecodeH265ReferenceInfoFlags, PicOrderCntVal::Int32) + ref = Ref{StdVideoDecodeH265ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfo}, ref) + ptr.flags = flags + ptr.PicOrderCntVal = PicOrderCntVal + ref[] +end + +struct VkVideoDecodeH265ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfileIdc::StdVideoH265ProfileIdc +end + +struct VkVideoDecodeH265CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevelIdc::StdVideoH265LevelIdc +end + +struct VkVideoDecodeH265SessionParametersAddInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdVPSCount::UInt32 + pStdVPSs::Ptr{StdVideoH265VideoParameterSet} + stdSPSCount::UInt32 + pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} + stdPPSCount::UInt32 + pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeH265SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxStdVPSCount::UInt32 + maxStdSPSCount::UInt32 + maxStdPPSCount::UInt32 + pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +end + +struct VkVideoDecodeH265PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} + sliceSegmentCount::UInt32 + pSliceSegmentOffsets::Ptr{UInt32} +end + +struct VkVideoDecodeH265DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} +end + +const VkQueueGlobalPriorityKHR = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoKHR = VkDeviceQueueGlobalPriorityCreateInfo + +const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = VkPhysicalDeviceGlobalPriorityQueryFeatures + +const VkQueueFamilyGlobalPriorityPropertiesKHR = VkQueueFamilyGlobalPriorityProperties + +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 vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) + ccall(fptr, 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 vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures + +@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin + 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 +end + +struct VkFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} + shadingRateAttachmentTexelSize::VkExtent2D +end + +struct VkPipelineFragmentShadingRateStateCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentSize::VkExtent2D + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +end + +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineFragmentShadingRate::VkBool32 + primitiveFragmentShadingRate::VkBool32 + attachmentFragmentShadingRate::VkBool32 +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 +end + +struct VkPhysicalDeviceFragmentShadingRateKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleCounts::VkSampleCountFlags + fragmentSize::VkExtent2D +end + +struct VkRenderingFragmentShadingRateAttachmentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout + shadingRateAttachmentTexelSize::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR +const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR +const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) + ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +end + +const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VkPhysicalDeviceDynamicRenderingLocalReadFeatures + +const VkRenderingAttachmentLocationInfoKHR = VkRenderingAttachmentLocationInfo + +const VkRenderingInputAttachmentIndexInfoKHR = VkRenderingInputAttachmentIndexInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingAttachmentLocationsKHR +const PFN_vkCmdSetRenderingAttachmentLocationsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRenderingInputAttachmentIndicesKHR +const PFN_vkCmdSetRenderingInputAttachmentIndicesKHR = Ptr{Cvoid} + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo) + ccall((:vkCmdSetRenderingAttachmentLocationsKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingAttachmentLocationInfo}), commandBuffer, pLocationInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo) + ccall((:vkCmdSetRenderingInputAttachmentIndicesKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +function vkCmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingInputAttachmentIndexInfo}), commandBuffer, pInputAttachmentIndexInfo) +end + +struct VkPhysicalDeviceShaderQuadControlFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderQuadControl::VkBool32 +end + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +struct VkPhysicalDevicePresentWaitFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR +const PFN_vkWaitForPresentKHR = Ptr{Cvoid} + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout) + ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +end + +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 vkGetBufferDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkDeferredOperationKHR_T = Cvoid + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) + ccall(fptr, 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 vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) + ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +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 + +function Base.propertynames(x::VkPipelineExecutableStatisticValueKHR, private::Bool = false) + (:b32, :i64, :u64, :f64, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} + +function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticValueKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) + if val isa VkBool32 + ptr.b32 = val + elseif val isa Int64 + ptr.i64 = val + elseif val isa UInt64 + ptr.u64 = val + elseif val isa Cdouble + ptr.f64 = val + end + ref[] +end + +struct VkPipelineExecutableStatisticKHR + data::NTuple{544, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :name && return Ptr{NTuple{256, Cchar}}(x + 16) + f === :description && return Ptr{NTuple{256, Cchar}}(x + 272) + f === :format && return Ptr{VkPipelineExecutableStatisticFormatKHR}(x + 528) + f === :value && return Ptr{VkPipelineExecutableStatisticValueKHR}(x + 536) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPipelineExecutableStatisticKHR, private::Bool = false) + (:sType, :pNext, :name, :description, :format, :value, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkPipelineExecutableStatisticKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, name::NTuple{256, Cchar}, description::NTuple{256, Cchar}, format::VkPipelineExecutableStatisticFormatKHR, value::VkPipelineExecutableStatisticValueKHR) + ref = Ref{VkPipelineExecutableStatisticKHR}() + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.name = name + ptr.description = description + ptr.format = format + ptr.value = value + ref[] +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 +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR +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 vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) + ccall(fptr, 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 vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) + ccall(fptr, 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 vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkMemoryUnmapFlagBitsKHR = VkMemoryUnmapFlagBits + +const VkMemoryUnmapFlagsKHR = VkMemoryUnmapFlags + +const VkMemoryMapInfoKHR = VkMemoryMapInfo + +const VkMemoryUnmapInfoKHR = VkMemoryUnmapInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory2KHR +const PFN_vkMapMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkUnmapMemory2KHR +const PFN_vkUnmapMemory2KHR = Ptr{Cvoid} + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData) + ccall((:vkMapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkMapMemory2KHR(device, pMemoryMapInfo, ppData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryMapInfo}, Ptr{Ptr{Cvoid}}), device, pMemoryMapInfo, ppData) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo) + ccall((:vkUnmapMemory2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +function vkUnmapMemory2KHR(device, pMemoryUnmapInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryUnmapInfo}), device, pMemoryUnmapInfo) +end + +const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures + +const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +struct VkPresentIdKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentIdFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::VkBool32 +end + +@cenum VkVideoEncodeTuningModeKHR::UInt32 begin + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1 + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2 + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3 + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4 + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 4 + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 1 + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 2 + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFlagsKHR = VkFlags + +@cenum VkVideoEncodeCapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 1 + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 2 + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 4 + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 8 + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeCapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeRateControlModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 1 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 2 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 4 + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeRateControlModeFlagsKHR = VkFlags + +@cenum VkVideoEncodeFeedbackFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 1 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 2 + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 4 + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeFeedbackFlagsKHR = VkFlags + +@cenum VkVideoEncodeUsageFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 1 + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 2 + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 4 + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 8 + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeUsageFlagsKHR = VkFlags + +@cenum VkVideoEncodeContentFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0 + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 1 + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 2 + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 4 + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeContentFlagsKHR = VkFlags + +const VkVideoEncodeRateControlFlagsKHR = VkFlags + +struct VkVideoEncodeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeFlagsKHR + dstBuffer::VkBuffer + dstBufferOffset::VkDeviceSize + dstBufferRange::VkDeviceSize + srcPictureResource::VkVideoPictureResourceInfoKHR + pSetupReferenceSlot::Ptr{VkVideoReferenceSlotInfoKHR} + referenceSlotCount::UInt32 + pReferenceSlots::Ptr{VkVideoReferenceSlotInfoKHR} + precedingExternallyEncodedBytes::UInt32 +end + +struct VkVideoEncodeCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeCapabilityFlagsKHR + rateControlModes::VkVideoEncodeRateControlModeFlagsKHR + maxRateControlLayers::UInt32 + maxBitrate::UInt64 + maxQualityLevels::UInt32 + encodeInputPictureGranularity::VkExtent2D + supportedEncodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + encodeFeedbackFlags::VkVideoEncodeFeedbackFlagsKHR +end + +struct VkVideoEncodeUsageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoUsageHints::VkVideoEncodeUsageFlagsKHR + videoContentHints::VkVideoEncodeContentFlagsKHR + tuningMode::VkVideoEncodeTuningModeKHR +end + +struct VkVideoEncodeRateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + averageBitrate::UInt64 + maxBitrate::UInt64 + frameRateNumerator::UInt32 + frameRateDenominator::UInt32 +end + +struct VkVideoEncodeRateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeRateControlFlagsKHR + rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + layerCount::UInt32 + pLayers::Ptr{VkVideoEncodeRateControlLayerInfoKHR} + virtualBufferSizeInMs::UInt32 + initialVirtualBufferSizeInMs::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVideoProfile::Ptr{VkVideoProfileInfoKHR} + qualityLevel::UInt32 +end + +struct VkVideoEncodeQualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR + preferredRateControlLayerCount::UInt32 +end + +struct VkVideoEncodeQualityLevelInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + qualityLevel::UInt32 +end + +struct VkVideoEncodeSessionParametersGetInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoSessionParameters::VkVideoSessionParametersKHR +end + +struct VkVideoEncodeSessionParametersFeedbackInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + hasOverrides::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR +const PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEncodedVideoSessionParametersKHR +const PFN_vkGetEncodedVideoSessionParametersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEncodeVideoKHR +const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties) + ccall((:vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice, pQualityLevelInfo, pQualityLevelProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR}, Ptr{VkVideoEncodeQualityLevelPropertiesKHR}), physicalDevice, pQualityLevelInfo, pQualityLevelProperties) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) + ccall((:vkGetEncodedVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkGetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkVideoEncodeSessionParametersGetInfoKHR}, Ptr{VkVideoEncodeSessionParametersFeedbackInfoKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) + ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) +end + +const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 + +const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 + +const VkAccessFlags2KHR = VkAccessFlags2 + +const VkAccessFlagBits2KHR = VkAccessFlagBits2 + +const VkSubmitFlagBitsKHR = VkSubmitFlagBits + +const VkSubmitFlagsKHR = VkSubmitFlags + +const VkMemoryBarrier2KHR = VkMemoryBarrier2 + +const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 + +const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 + +const VkDependencyInfoKHR = VkDependencyInfo + +const VkSubmitInfo2KHR = VkSubmitInfo2 + +const VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo + +const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo + +const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR +const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR +const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR +const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR +const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR +const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR +const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) + ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) + ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) + ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) + ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) + ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupUniformControlFlow::VkBool32 +end + +const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + +struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + workgroupMemoryExplicitLayout::VkBool32 + workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 + workgroupMemoryExplicitLayout8BitAccess::VkBool32 + workgroupMemoryExplicitLayout16BitAccess::VkBool32 +end + +const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 + +const VkCopyImageInfo2KHR = VkCopyImageInfo2 + +const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 + +const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 + +const VkBlitImageInfo2KHR = VkBlitImageInfo2 + +const VkResolveImageInfo2KHR = VkResolveImageInfo2 + +const VkBufferCopy2KHR = VkBufferCopy2 + +const VkImageCopy2KHR = VkImageCopy2 + +const VkImageBlit2KHR = VkImageBlit2 + +const VkBufferImageCopy2KHR = VkBufferImageCopy2 + +const VkImageResolve2KHR = VkImageResolve2 + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR +const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR +const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR +const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR +const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR +const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR +const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) + ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) + ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) + ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) + ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) + ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) + ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +end + +const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 + +const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 + +const VkFormatProperties3KHR = VkFormatProperties3 + +struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMaintenance1::VkBool32 + rayTracingPipelineTraceRaysIndirect2::VkBool32 +end + +struct VkTraceRaysIndirectCommand2KHR + raygenShaderRecordAddress::VkDeviceAddress + raygenShaderRecordSize::VkDeviceSize + missShaderBindingTableAddress::VkDeviceAddress + missShaderBindingTableSize::VkDeviceSize + missShaderBindingTableStride::VkDeviceSize + hitShaderBindingTableAddress::VkDeviceAddress + hitShaderBindingTableSize::VkDeviceSize + hitShaderBindingTableStride::VkDeviceSize + callableShaderBindingTableAddress::VkDeviceAddress + callableShaderBindingTableSize::VkDeviceSize + callableShaderBindingTableStride::VkDeviceSize + width::UInt32 + height::UInt32 + depth::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR +const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) + ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) +end + +const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features + +const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties + +const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements + +const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR +const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR +const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR +const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR = VkPhysicalDeviceShaderSubgroupRotateFeatures + +struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderMaximalReconvergence::VkBool32 +end + +const VkPipelineCreateFlags2KHR = VkPipelineCreateFlags2 + +const VkPipelineCreateFlagBits2KHR = VkPipelineCreateFlagBits2 + +const VkBufferUsageFlags2KHR = VkBufferUsageFlags2 + +const VkBufferUsageFlagBits2KHR = VkBufferUsageFlagBits2 + +const VkPhysicalDeviceMaintenance5FeaturesKHR = VkPhysicalDeviceMaintenance5Features + +const VkPhysicalDeviceMaintenance5PropertiesKHR = VkPhysicalDeviceMaintenance5Properties + +const VkRenderingAreaInfoKHR = VkRenderingAreaInfo + +const VkDeviceImageSubresourceInfoKHR = VkDeviceImageSubresourceInfo + +const VkImageSubresource2KHR = VkImageSubresource2 + +const VkSubresourceLayout2KHR = VkSubresourceLayout2 + +const VkPipelineCreateFlags2CreateInfoKHR = VkPipelineCreateFlags2CreateInfo + +const VkBufferUsageFlags2CreateInfoKHR = VkBufferUsageFlags2CreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer2KHR +const PFN_vkCmdBindIndexBuffer2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderingAreaGranularityKHR +const PFN_vkGetRenderingAreaGranularityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSubresourceLayoutKHR +const PFN_vkGetDeviceImageSubresourceLayoutKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2KHR +const PFN_vkGetImageSubresourceLayout2KHR = Ptr{Cvoid} + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType) + ccall((:vkCmdBindIndexBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkCmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, size, indexType) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity) + ccall((:vkGetRenderingAreaGranularityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkRenderingAreaInfo}, Ptr{VkExtent2D}), device, pRenderingAreaInfo, pGranularity) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout) + ccall((:vkGetDeviceImageSubresourceLayoutKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageSubresourceInfo}, Ptr{VkSubresourceLayout2}), device, pInfo, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2KHR, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +function vkGetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) +end + +struct VkSurfaceCapabilitiesPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2Supported::VkBool32 +end + +struct VkPresentId2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentIds::Ptr{UInt64} +end + +struct VkPhysicalDevicePresentId2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId2::VkBool32 +end + +struct VkSurfaceCapabilitiesPresentWait2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2Supported::VkBool32 +end + +struct VkPhysicalDevicePresentWait2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentWait2::VkBool32 +end + +struct VkPresentWait2InfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentId::UInt64 + timeout::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresent2KHR +const PFN_vkWaitForPresent2KHR = Ptr{Cvoid} + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info) + ccall((:vkWaitForPresent2KHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +function vkWaitForPresent2KHR(device, swapchain, pPresentWait2Info, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkPresentWait2InfoKHR}), device, swapchain, pPresentWait2Info) +end + +struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingPositionFetch::VkBool32 +end + +const VkPipelineBinaryKHR_T = Cvoid + +const VkPipelineBinaryKHR = Ptr{VkPipelineBinaryKHR_T} + +struct VkPhysicalDevicePipelineBinaryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaries::VkBool32 +end + +struct VkPhysicalDevicePipelineBinaryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryInternalCache::VkBool32 + pipelineBinaryInternalCacheControl::VkBool32 + pipelineBinaryPrefersInternalCache::VkBool32 + pipelineBinaryPrecompiledInternalCache::VkBool32 + pipelineBinaryCompressedData::VkBool32 +end + +struct VkDevicePipelineBinaryInternalCacheControlKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + disableInternalCache::VkBool32 +end + +struct VkPipelineBinaryKeyKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + keySize::UInt32 + key::NTuple{32, UInt8} +end + +struct VkPipelineBinaryDataKHR + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineBinaryKeysAndDataKHR + binaryCount::UInt32 + pPipelineBinaryKeys::Ptr{VkPipelineBinaryKeyKHR} + pPipelineBinaryData::Ptr{VkPipelineBinaryDataKHR} +end + +struct VkPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPipelineBinaryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pKeysAndDataInfo::Ptr{VkPipelineBinaryKeysAndDataKHR} + pipeline::VkPipeline + pPipelineCreateInfo::Ptr{VkPipelineCreateInfoKHR} +end + +struct VkPipelineBinaryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + binaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +struct VkReleaseCapturedPipelineDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineBinaryDataInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinary::VkPipelineBinaryKHR +end + +struct VkPipelineBinaryHandlesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBinaryCount::UInt32 + pPipelineBinaries::Ptr{VkPipelineBinaryKHR} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineBinariesKHR +const PFN_vkCreatePipelineBinariesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineBinaryKHR +const PFN_vkDestroyPipelineBinaryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineKeyKHR +const PFN_vkGetPipelineKeyKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineBinaryDataKHR +const PFN_vkGetPipelineBinaryDataKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseCapturedPipelineDataKHR +const PFN_vkReleaseCapturedPipelineDataKHR = Ptr{Cvoid} + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries) + ccall((:vkCreatePipelineBinariesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkCreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineBinaryHandlesInfoKHR}), device, pCreateInfo, pAllocator, pBinaries) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator) + ccall((:vkDestroyPipelineBinaryKHR, libvulkan), Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkDestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPipelineBinaryKHR, Ptr{VkAllocationCallbacks}), device, pipelineBinary, pAllocator) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey) + ccall((:vkGetPipelineKeyKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineCreateInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}), device, pPipelineCreateInfo, pPipelineKey) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) + ccall((:vkGetPipelineBinaryDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkGetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineBinaryDataInfoKHR}, Ptr{VkPipelineBinaryKeyKHR}, Ptr{Csize_t}, Ptr{Cvoid}), device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator) + ccall((:vkReleaseCapturedPipelineDataKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +function vkReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseCapturedPipelineDataInfoKHR}, Ptr{VkAllocationCallbacks}), device, pInfo, pAllocator) +end + +@cenum VkPresentScalingFlagBitsKHR::UInt32 begin + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 2 + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 4 + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentScalingFlagsKHR = VkFlags + +@cenum VkPresentGravityFlagBitsKHR::UInt32 begin + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 1 + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 4 + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPresentGravityFlagsKHR = VkFlags + +struct VkSurfacePresentModeKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMode::VkPresentModeKHR +end + +struct VkSurfacePresentScalingCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedPresentScaling::VkPresentScalingFlagsKHR + supportedPresentGravityX::VkPresentGravityFlagsKHR + supportedPresentGravityY::VkPresentGravityFlagsKHR + minScaledImageExtent::VkExtent2D + maxScaledImageExtent::VkExtent2D +end + +struct VkSurfacePresentModeCompatibilityKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainMaintenance1::VkBool32 +end + +struct VkSwapchainPresentFenceInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pFences::Ptr{VkFence} +end + +struct VkSwapchainPresentModesCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentModeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} +end + +struct VkSwapchainPresentScalingCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + scalingBehavior::VkPresentScalingFlagsKHR + presentGravityX::VkPresentGravityFlagsKHR + presentGravityY::VkPresentGravityFlagsKHR +end + +struct VkReleaseSwapchainImagesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndexCount::UInt32 + pImageIndices::Ptr{UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesKHR +const PFN_vkReleaseSwapchainImagesKHR = Ptr{Cvoid} + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +function vkReleaseSwapchainImagesKHR(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) +end + +@cenum VkComponentTypeKHR::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_KHR = 0 + VK_COMPONENT_TYPE_FLOAT32_KHR = 1 + VK_COMPONENT_TYPE_FLOAT64_KHR = 2 + VK_COMPONENT_TYPE_SINT8_KHR = 3 + VK_COMPONENT_TYPE_SINT16_KHR = 4 + VK_COMPONENT_TYPE_SINT32_KHR = 5 + VK_COMPONENT_TYPE_SINT64_KHR = 6 + VK_COMPONENT_TYPE_UINT8_KHR = 7 + VK_COMPONENT_TYPE_UINT16_KHR = 8 + VK_COMPONENT_TYPE_UINT32_KHR = 9 + VK_COMPONENT_TYPE_UINT64_KHR = 10 + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000 + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000 + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001 + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002 + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003 + 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_FLOAT_E4M3_NV = 1000491002 + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = 1000491003 + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkScopeKHR::UInt32 begin + VK_SCOPE_DEVICE_KHR = 1 + VK_SCOPE_WORKGROUP_KHR = 2 + VK_SCOPE_SUBGROUP_KHR = 3 + VK_SCOPE_QUEUE_FAMILY_KHR = 5 + 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_KHR = 2147483647 +end + +struct VkCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + meshAndTaskShaderDerivatives::VkBool32 +end + +@cenum StdVideoAV1Profile::UInt32 begin + STD_VIDEO_AV1_PROFILE_MAIN = 0 + STD_VIDEO_AV1_PROFILE_HIGH = 1 + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2 + STD_VIDEO_AV1_PROFILE_INVALID = 2147483647 + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1Level::UInt32 begin + STD_VIDEO_AV1_LEVEL_2_0 = 0 + STD_VIDEO_AV1_LEVEL_2_1 = 1 + STD_VIDEO_AV1_LEVEL_2_2 = 2 + STD_VIDEO_AV1_LEVEL_2_3 = 3 + STD_VIDEO_AV1_LEVEL_3_0 = 4 + STD_VIDEO_AV1_LEVEL_3_1 = 5 + STD_VIDEO_AV1_LEVEL_3_2 = 6 + STD_VIDEO_AV1_LEVEL_3_3 = 7 + STD_VIDEO_AV1_LEVEL_4_0 = 8 + STD_VIDEO_AV1_LEVEL_4_1 = 9 + STD_VIDEO_AV1_LEVEL_4_2 = 10 + STD_VIDEO_AV1_LEVEL_4_3 = 11 + STD_VIDEO_AV1_LEVEL_5_0 = 12 + STD_VIDEO_AV1_LEVEL_5_1 = 13 + STD_VIDEO_AV1_LEVEL_5_2 = 14 + STD_VIDEO_AV1_LEVEL_5_3 = 15 + STD_VIDEO_AV1_LEVEL_6_0 = 16 + STD_VIDEO_AV1_LEVEL_6_1 = 17 + STD_VIDEO_AV1_LEVEL_6_2 = 18 + STD_VIDEO_AV1_LEVEL_6_3 = 19 + STD_VIDEO_AV1_LEVEL_7_0 = 20 + STD_VIDEO_AV1_LEVEL_7_1 = 21 + STD_VIDEO_AV1_LEVEL_7_2 = 22 + STD_VIDEO_AV1_LEVEL_7_3 = 23 + STD_VIDEO_AV1_LEVEL_INVALID = 2147483647 + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameType::UInt32 begin + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0 + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1 + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2 + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3 + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ReferenceName::UInt32 begin + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2 + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3 + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4 + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6 + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7 + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1InterpolationFilter::UInt32 begin + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TxMode::UInt32 begin + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0 + STD_VIDEO_AV1_TX_MODE_LARGEST = 1 + STD_VIDEO_AV1_TX_MODE_SELECT = 2 + STD_VIDEO_AV1_TX_MODE_INVALID = 2147483647 + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1FrameRestorationType::UInt32 begin + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 2147483647 + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ColorPrimaries::UInt32 begin + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1 + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7 + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9 + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11 + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12 + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22 + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 2147483647 + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2 + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1TransferCharacteristics::UInt32 begin + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 2147483647 + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1MatrixCoefficients::UInt32 begin + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 2147483647 + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 2147483647 +end + +@cenum StdVideoAV1ChromaSamplePosition::UInt32 begin + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 2147483647 + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 2147483647 +end + +struct StdVideoAV1ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol) + f === :mono_chrome && return (Ptr{UInt32}(x + 0), 0, 1) + f === :color_range && return (Ptr{UInt32}(x + 0), 1, 1) + f === :separate_uv_delta_q && return (Ptr{UInt32}(x + 0), 2, 1) + f === :color_description_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfigFlags, f::Symbol) + r = Ref{StdVideoAV1ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1ColorConfigFlags, private::Bool = false) + (:mono_chrome, :color_range, :separate_uv_delta_q, :color_description_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfigFlags(mono_chrome::UInt32, color_range::UInt32, separate_uv_delta_q::UInt32, color_description_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfigFlags}, ref) + ptr.mono_chrome = mono_chrome + ptr.color_range = color_range + ptr.separate_uv_delta_q = separate_uv_delta_q + ptr.color_description_present_flag = color_description_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1ColorConfig + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_primaries && return Ptr{StdVideoAV1ColorPrimaries}(x + 8) + f === :transfer_characteristics && return Ptr{StdVideoAV1TransferCharacteristics}(x + 12) + f === :matrix_coefficients && return Ptr{StdVideoAV1MatrixCoefficients}(x + 16) + f === :chroma_sample_position && return Ptr{StdVideoAV1ChromaSamplePosition}(x + 20) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1ColorConfig, f::Symbol) + r = Ref{StdVideoAV1ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_primaries, :transfer_characteristics, :matrix_coefficients, :chroma_sample_position, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1ColorConfig(flags::StdVideoAV1ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_primaries::StdVideoAV1ColorPrimaries, transfer_characteristics::StdVideoAV1TransferCharacteristics, matrix_coefficients::StdVideoAV1MatrixCoefficients, chroma_sample_position::StdVideoAV1ChromaSamplePosition) + ref = Ref{StdVideoAV1ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_primaries = color_primaries + ptr.transfer_characteristics = transfer_characteristics + ptr.matrix_coefficients = matrix_coefficients + ptr.chroma_sample_position = chroma_sample_position + ref[] +end + +struct StdVideoAV1TimingInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol) + f === :equal_picture_interval && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TimingInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TimingInfoFlags, private::Bool = false) + (:equal_picture_interval, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfoFlags(equal_picture_interval::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TimingInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfoFlags}, ref) + ptr.equal_picture_interval = equal_picture_interval + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TimingInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TimingInfoFlags}(x + 0) + f === :num_units_in_display_tick && return Ptr{UInt32}(x + 4) + f === :time_scale && return Ptr{UInt32}(x + 8) + f === :num_ticks_per_picture_minus_1 && return Ptr{UInt32}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TimingInfo, f::Symbol) + r = Ref{StdVideoAV1TimingInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TimingInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TimingInfo, private::Bool = false) + (:flags, :num_units_in_display_tick, :time_scale, :num_ticks_per_picture_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TimingInfo(flags::StdVideoAV1TimingInfoFlags, num_units_in_display_tick::UInt32, time_scale::UInt32, num_ticks_per_picture_minus_1::UInt32) + ref = Ref{StdVideoAV1TimingInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TimingInfo}, ref) + ptr.flags = flags + ptr.num_units_in_display_tick = num_units_in_display_tick + ptr.time_scale = time_scale + ptr.num_ticks_per_picture_minus_1 = num_ticks_per_picture_minus_1 + ref[] +end + +struct StdVideoAV1LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilterFlags, f::Symbol) + r = Ref{StdVideoAV1LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1LoopFilter + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{NTuple{4, UInt8}}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 8) + f === :update_ref_delta && return Ptr{UInt8}(x + 9) + f === :loop_filter_ref_deltas && return Ptr{NTuple{8, Int8}}(x + 10) + f === :update_mode_delta && return Ptr{UInt8}(x + 18) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 19) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1LoopFilter, f::Symbol) + r = Ref{StdVideoAV1LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1LoopFilter(flags::StdVideoAV1LoopFilterFlags, loop_filter_level::NTuple{4, UInt8}, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{8, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoAV1LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoAV1QuantizationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol) + f === :using_qmatrix && return (Ptr{UInt32}(x + 0), 0, 1) + f === :diff_uv_delta && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1QuantizationFlags, f::Symbol) + r = Ref{StdVideoAV1QuantizationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1QuantizationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1QuantizationFlags, private::Bool = false) + (:using_qmatrix, :diff_uv_delta, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1QuantizationFlags(using_qmatrix::UInt32, diff_uv_delta::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1QuantizationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1QuantizationFlags}, ref) + ptr.using_qmatrix = using_qmatrix + ptr.diff_uv_delta = diff_uv_delta + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1Quantization + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1Quantization}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1QuantizationFlags}(x + 0) + f === :base_q_idx && return Ptr{UInt8}(x + 4) + f === :DeltaQYDc && return Ptr{Int8}(x + 5) + f === :DeltaQUDc && return Ptr{Int8}(x + 6) + f === :DeltaQUAc && return Ptr{Int8}(x + 7) + f === :DeltaQVDc && return Ptr{Int8}(x + 8) + f === :DeltaQVAc && return Ptr{Int8}(x + 9) + f === :qm_y && return Ptr{UInt8}(x + 10) + f === :qm_u && return Ptr{UInt8}(x + 11) + f === :qm_v && return Ptr{UInt8}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1Quantization, f::Symbol) + r = Ref{StdVideoAV1Quantization}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1Quantization}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1Quantization, private::Bool = false) + (:flags, :base_q_idx, :DeltaQYDc, :DeltaQUDc, :DeltaQUAc, :DeltaQVDc, :DeltaQVAc, :qm_y, :qm_u, :qm_v, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1Quantization(flags::StdVideoAV1QuantizationFlags, base_q_idx::UInt8, DeltaQYDc::Int8, DeltaQUDc::Int8, DeltaQUAc::Int8, DeltaQVDc::Int8, DeltaQVAc::Int8, qm_y::UInt8, qm_u::UInt8, qm_v::UInt8) + ref = Ref{StdVideoAV1Quantization}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1Quantization}, ref) + ptr.flags = flags + ptr.base_q_idx = base_q_idx + ptr.DeltaQYDc = DeltaQYDc + ptr.DeltaQUDc = DeltaQUDc + ptr.DeltaQUAc = DeltaQUAc + ptr.DeltaQVDc = DeltaQVDc + ptr.DeltaQVAc = DeltaQVAc + ptr.qm_y = qm_y + ptr.qm_u = qm_u + ptr.qm_v = qm_v + ref[] +end + +struct StdVideoAV1Segmentation + FeatureEnabled::NTuple{8, UInt8} + FeatureData::NTuple{8, NTuple{8, Int16}} +end + +struct StdVideoAV1TileInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol) + f === :uniform_tile_spacing_flag && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfoFlags, f::Symbol) + r = Ref{StdVideoAV1TileInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1TileInfoFlags, private::Bool = false) + (:uniform_tile_spacing_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfoFlags(uniform_tile_spacing_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1TileInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfoFlags}, ref) + ptr.uniform_tile_spacing_flag = uniform_tile_spacing_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1TileInfo + data::NTuple{48, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1TileInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1TileInfoFlags}(x + 0) + f === :TileCols && return Ptr{UInt8}(x + 4) + f === :TileRows && return Ptr{UInt8}(x + 5) + f === :context_update_tile_id && return Ptr{UInt16}(x + 6) + f === :tile_size_bytes_minus_1 && return Ptr{UInt8}(x + 8) + f === :reserved1 && return Ptr{NTuple{7, UInt8}}(x + 9) + f === :pMiColStarts && return Ptr{Ptr{UInt16}}(x + 16) + f === :pMiRowStarts && return Ptr{Ptr{UInt16}}(x + 24) + f === :pWidthInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 32) + f === :pHeightInSbsMinus1 && return Ptr{Ptr{UInt16}}(x + 40) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1TileInfo, f::Symbol) + r = Ref{StdVideoAV1TileInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1TileInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1TileInfo, private::Bool = false) + (:flags, :TileCols, :TileRows, :context_update_tile_id, :tile_size_bytes_minus_1, :reserved1, :pMiColStarts, :pMiRowStarts, :pWidthInSbsMinus1, :pHeightInSbsMinus1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1TileInfo(flags::StdVideoAV1TileInfoFlags, TileCols::UInt8, TileRows::UInt8, context_update_tile_id::UInt16, tile_size_bytes_minus_1::UInt8, reserved1::NTuple{7, UInt8}, pMiColStarts::Ptr{UInt16}, pMiRowStarts::Ptr{UInt16}, pWidthInSbsMinus1::Ptr{UInt16}, pHeightInSbsMinus1::Ptr{UInt16}) + ref = Ref{StdVideoAV1TileInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1TileInfo}, ref) + ptr.flags = flags + ptr.TileCols = TileCols + ptr.TileRows = TileRows + ptr.context_update_tile_id = context_update_tile_id + ptr.tile_size_bytes_minus_1 = tile_size_bytes_minus_1 + ptr.reserved1 = reserved1 + ptr.pMiColStarts = pMiColStarts + ptr.pMiRowStarts = pMiRowStarts + ptr.pWidthInSbsMinus1 = pWidthInSbsMinus1 + ptr.pHeightInSbsMinus1 = pHeightInSbsMinus1 + ref[] +end + +struct StdVideoAV1CDEF + cdef_damping_minus_3::UInt8 + cdef_bits::UInt8 + cdef_y_pri_strength::NTuple{8, UInt8} + cdef_y_sec_strength::NTuple{8, UInt8} + cdef_uv_pri_strength::NTuple{8, UInt8} + cdef_uv_sec_strength::NTuple{8, UInt8} +end + +struct StdVideoAV1LoopRestoration + FrameRestorationType::NTuple{3, StdVideoAV1FrameRestorationType} + LoopRestorationSize::NTuple{3, UInt16} +end + +struct StdVideoAV1GlobalMotion + GmType::NTuple{8, UInt8} + gm_params::NTuple{8, NTuple{6, Int32}} +end + +struct StdVideoAV1FilmGrainFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol) + f === :chroma_scaling_from_luma && return (Ptr{UInt32}(x + 0), 0, 1) + f === :overlap_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :clip_to_restricted_range && return (Ptr{UInt32}(x + 0), 2, 1) + f === :update_grain && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrainFlags, f::Symbol) + r = Ref{StdVideoAV1FilmGrainFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrainFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1FilmGrainFlags, private::Bool = false) + (:chroma_scaling_from_luma, :overlap_flag, :clip_to_restricted_range, :update_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrainFlags(chroma_scaling_from_luma::UInt32, overlap_flag::UInt32, clip_to_restricted_range::UInt32, update_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1FilmGrainFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrainFlags}, ref) + ptr.chroma_scaling_from_luma = chroma_scaling_from_luma + ptr.overlap_flag = overlap_flag + ptr.clip_to_restricted_range = clip_to_restricted_range + ptr.update_grain = update_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1FilmGrain + data::NTuple{164, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1FilmGrainFlags}(x + 0) + f === :grain_scaling_minus_8 && return Ptr{UInt8}(x + 4) + f === :ar_coeff_lag && return Ptr{UInt8}(x + 5) + f === :ar_coeff_shift_minus_6 && return Ptr{UInt8}(x + 6) + f === :grain_scale_shift && return Ptr{UInt8}(x + 7) + f === :grain_seed && return Ptr{UInt16}(x + 8) + f === :film_grain_params_ref_idx && return Ptr{UInt8}(x + 10) + f === :num_y_points && return Ptr{UInt8}(x + 11) + f === :point_y_value && return Ptr{NTuple{14, UInt8}}(x + 12) + f === :point_y_scaling && return Ptr{NTuple{14, UInt8}}(x + 26) + f === :num_cb_points && return Ptr{UInt8}(x + 40) + f === :point_cb_value && return Ptr{NTuple{10, UInt8}}(x + 41) + f === :point_cb_scaling && return Ptr{NTuple{10, UInt8}}(x + 51) + f === :num_cr_points && return Ptr{UInt8}(x + 61) + f === :point_cr_value && return Ptr{NTuple{10, UInt8}}(x + 62) + f === :point_cr_scaling && return Ptr{NTuple{10, UInt8}}(x + 72) + f === :ar_coeffs_y_plus_128 && return Ptr{NTuple{24, Int8}}(x + 82) + f === :ar_coeffs_cb_plus_128 && return Ptr{NTuple{25, Int8}}(x + 106) + f === :ar_coeffs_cr_plus_128 && return Ptr{NTuple{25, Int8}}(x + 131) + f === :cb_mult && return Ptr{UInt8}(x + 156) + f === :cb_luma_mult && return Ptr{UInt8}(x + 157) + f === :cb_offset && return Ptr{UInt16}(x + 158) + f === :cr_mult && return Ptr{UInt8}(x + 160) + f === :cr_luma_mult && return Ptr{UInt8}(x + 161) + f === :cr_offset && return Ptr{UInt16}(x + 162) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1FilmGrain, f::Symbol) + r = Ref{StdVideoAV1FilmGrain}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1FilmGrain}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1FilmGrain, private::Bool = false) + (:flags, :grain_scaling_minus_8, :ar_coeff_lag, :ar_coeff_shift_minus_6, :grain_scale_shift, :grain_seed, :film_grain_params_ref_idx, :num_y_points, :point_y_value, :point_y_scaling, :num_cb_points, :point_cb_value, :point_cb_scaling, :num_cr_points, :point_cr_value, :point_cr_scaling, :ar_coeffs_y_plus_128, :ar_coeffs_cb_plus_128, :ar_coeffs_cr_plus_128, :cb_mult, :cb_luma_mult, :cb_offset, :cr_mult, :cr_luma_mult, :cr_offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1FilmGrain(flags::StdVideoAV1FilmGrainFlags, grain_scaling_minus_8::UInt8, ar_coeff_lag::UInt8, ar_coeff_shift_minus_6::UInt8, grain_scale_shift::UInt8, grain_seed::UInt16, film_grain_params_ref_idx::UInt8, num_y_points::UInt8, point_y_value::NTuple{14, UInt8}, point_y_scaling::NTuple{14, UInt8}, num_cb_points::UInt8, point_cb_value::NTuple{10, UInt8}, point_cb_scaling::NTuple{10, UInt8}, num_cr_points::UInt8, point_cr_value::NTuple{10, UInt8}, point_cr_scaling::NTuple{10, UInt8}, ar_coeffs_y_plus_128::NTuple{24, Int8}, ar_coeffs_cb_plus_128::NTuple{25, Int8}, ar_coeffs_cr_plus_128::NTuple{25, Int8}, cb_mult::UInt8, cb_luma_mult::UInt8, cb_offset::UInt16, cr_mult::UInt8, cr_luma_mult::UInt8, cr_offset::UInt16) + ref = Ref{StdVideoAV1FilmGrain}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1FilmGrain}, ref) + ptr.flags = flags + ptr.grain_scaling_minus_8 = grain_scaling_minus_8 + ptr.ar_coeff_lag = ar_coeff_lag + ptr.ar_coeff_shift_minus_6 = ar_coeff_shift_minus_6 + ptr.grain_scale_shift = grain_scale_shift + ptr.grain_seed = grain_seed + ptr.film_grain_params_ref_idx = film_grain_params_ref_idx + ptr.num_y_points = num_y_points + ptr.point_y_value = point_y_value + ptr.point_y_scaling = point_y_scaling + ptr.num_cb_points = num_cb_points + ptr.point_cb_value = point_cb_value + ptr.point_cb_scaling = point_cb_scaling + ptr.num_cr_points = num_cr_points + ptr.point_cr_value = point_cr_value + ptr.point_cr_scaling = point_cr_scaling + ptr.ar_coeffs_y_plus_128 = ar_coeffs_y_plus_128 + ptr.ar_coeffs_cb_plus_128 = ar_coeffs_cb_plus_128 + ptr.ar_coeffs_cr_plus_128 = ar_coeffs_cr_plus_128 + ptr.cb_mult = cb_mult + ptr.cb_luma_mult = cb_luma_mult + ptr.cb_offset = cb_offset + ptr.cr_mult = cr_mult + ptr.cr_luma_mult = cr_luma_mult + ptr.cr_offset = cr_offset + ref[] +end + +struct StdVideoAV1SequenceHeaderFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol) + f === :still_picture && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reduced_still_picture_header && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_128x128_superblock && return (Ptr{UInt32}(x + 0), 2, 1) + f === :enable_filter_intra && return (Ptr{UInt32}(x + 0), 3, 1) + f === :enable_intra_edge_filter && return (Ptr{UInt32}(x + 0), 4, 1) + f === :enable_interintra_compound && return (Ptr{UInt32}(x + 0), 5, 1) + f === :enable_masked_compound && return (Ptr{UInt32}(x + 0), 6, 1) + f === :enable_warped_motion && return (Ptr{UInt32}(x + 0), 7, 1) + f === :enable_dual_filter && return (Ptr{UInt32}(x + 0), 8, 1) + f === :enable_order_hint && return (Ptr{UInt32}(x + 0), 9, 1) + f === :enable_jnt_comp && return (Ptr{UInt32}(x + 0), 10, 1) + f === :enable_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 11, 1) + f === :frame_id_numbers_present_flag && return (Ptr{UInt32}(x + 0), 12, 1) + f === :enable_superres && return (Ptr{UInt32}(x + 0), 13, 1) + f === :enable_cdef && return (Ptr{UInt32}(x + 0), 14, 1) + f === :enable_restoration && return (Ptr{UInt32}(x + 0), 15, 1) + f === :film_grain_params_present && return (Ptr{UInt32}(x + 0), 16, 1) + f === :timing_info_present_flag && return (Ptr{UInt32}(x + 0), 17, 1) + f === :initial_display_delay_present_flag && return (Ptr{UInt32}(x + 0), 18, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 19, 13) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeaderFlags, f::Symbol) + r = Ref{StdVideoAV1SequenceHeaderFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeaderFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoAV1SequenceHeaderFlags, private::Bool = false) + (:still_picture, :reduced_still_picture_header, :use_128x128_superblock, :enable_filter_intra, :enable_intra_edge_filter, :enable_interintra_compound, :enable_masked_compound, :enable_warped_motion, :enable_dual_filter, :enable_order_hint, :enable_jnt_comp, :enable_ref_frame_mvs, :frame_id_numbers_present_flag, :enable_superres, :enable_cdef, :enable_restoration, :film_grain_params_present, :timing_info_present_flag, :initial_display_delay_present_flag, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeaderFlags(still_picture::UInt32, reduced_still_picture_header::UInt32, use_128x128_superblock::UInt32, enable_filter_intra::UInt32, enable_intra_edge_filter::UInt32, enable_interintra_compound::UInt32, enable_masked_compound::UInt32, enable_warped_motion::UInt32, enable_dual_filter::UInt32, enable_order_hint::UInt32, enable_jnt_comp::UInt32, enable_ref_frame_mvs::UInt32, frame_id_numbers_present_flag::UInt32, enable_superres::UInt32, enable_cdef::UInt32, enable_restoration::UInt32, film_grain_params_present::UInt32, timing_info_present_flag::UInt32, initial_display_delay_present_flag::UInt32, reserved::UInt32) + ref = Ref{StdVideoAV1SequenceHeaderFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeaderFlags}, ref) + ptr.still_picture = still_picture + ptr.reduced_still_picture_header = reduced_still_picture_header + ptr.use_128x128_superblock = use_128x128_superblock + ptr.enable_filter_intra = enable_filter_intra + ptr.enable_intra_edge_filter = enable_intra_edge_filter + ptr.enable_interintra_compound = enable_interintra_compound + ptr.enable_masked_compound = enable_masked_compound + ptr.enable_warped_motion = enable_warped_motion + ptr.enable_dual_filter = enable_dual_filter + ptr.enable_order_hint = enable_order_hint + ptr.enable_jnt_comp = enable_jnt_comp + ptr.enable_ref_frame_mvs = enable_ref_frame_mvs + ptr.frame_id_numbers_present_flag = frame_id_numbers_present_flag + ptr.enable_superres = enable_superres + ptr.enable_cdef = enable_cdef + ptr.enable_restoration = enable_restoration + ptr.film_grain_params_present = film_grain_params_present + ptr.timing_info_present_flag = timing_info_present_flag + ptr.initial_display_delay_present_flag = initial_display_delay_present_flag + ptr.reserved = reserved + ref[] +end + +struct StdVideoAV1SequenceHeader + data::NTuple{40, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol) + f === :flags && return Ptr{StdVideoAV1SequenceHeaderFlags}(x + 0) + f === :seq_profile && return Ptr{StdVideoAV1Profile}(x + 4) + f === :frame_width_bits_minus_1 && return Ptr{UInt8}(x + 8) + f === :frame_height_bits_minus_1 && return Ptr{UInt8}(x + 9) + f === :max_frame_width_minus_1 && return Ptr{UInt16}(x + 10) + f === :max_frame_height_minus_1 && return Ptr{UInt16}(x + 12) + f === :delta_frame_id_length_minus_2 && return Ptr{UInt8}(x + 14) + f === :additional_frame_id_length_minus_1 && return Ptr{UInt8}(x + 15) + f === :order_hint_bits_minus_1 && return Ptr{UInt8}(x + 16) + f === :seq_force_integer_mv && return Ptr{UInt8}(x + 17) + f === :seq_force_screen_content_tools && return Ptr{UInt8}(x + 18) + f === :reserved1 && return Ptr{NTuple{5, UInt8}}(x + 19) + f === :pColorConfig && return Ptr{Ptr{StdVideoAV1ColorConfig}}(x + 24) + f === :pTimingInfo && return Ptr{Ptr{StdVideoAV1TimingInfo}}(x + 32) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoAV1SequenceHeader, f::Symbol) + r = Ref{StdVideoAV1SequenceHeader}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoAV1SequenceHeader}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoAV1SequenceHeader, private::Bool = false) + (:flags, :seq_profile, :frame_width_bits_minus_1, :frame_height_bits_minus_1, :max_frame_width_minus_1, :max_frame_height_minus_1, :delta_frame_id_length_minus_2, :additional_frame_id_length_minus_1, :order_hint_bits_minus_1, :seq_force_integer_mv, :seq_force_screen_content_tools, :reserved1, :pColorConfig, :pTimingInfo, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoAV1SequenceHeader(flags::StdVideoAV1SequenceHeaderFlags, seq_profile::StdVideoAV1Profile, frame_width_bits_minus_1::UInt8, frame_height_bits_minus_1::UInt8, max_frame_width_minus_1::UInt16, max_frame_height_minus_1::UInt16, delta_frame_id_length_minus_2::UInt8, additional_frame_id_length_minus_1::UInt8, order_hint_bits_minus_1::UInt8, seq_force_integer_mv::UInt8, seq_force_screen_content_tools::UInt8, reserved1::NTuple{5, UInt8}, pColorConfig::Ptr{StdVideoAV1ColorConfig}, pTimingInfo::Ptr{StdVideoAV1TimingInfo}) + ref = Ref{StdVideoAV1SequenceHeader}() + ptr = Base.unsafe_convert(Ptr{StdVideoAV1SequenceHeader}, ref) + ptr.flags = flags + ptr.seq_profile = seq_profile + ptr.frame_width_bits_minus_1 = frame_width_bits_minus_1 + ptr.frame_height_bits_minus_1 = frame_height_bits_minus_1 + ptr.max_frame_width_minus_1 = max_frame_width_minus_1 + ptr.max_frame_height_minus_1 = max_frame_height_minus_1 + ptr.delta_frame_id_length_minus_2 = delta_frame_id_length_minus_2 + ptr.additional_frame_id_length_minus_1 = additional_frame_id_length_minus_1 + ptr.order_hint_bits_minus_1 = order_hint_bits_minus_1 + ptr.seq_force_integer_mv = seq_force_integer_mv + ptr.seq_force_screen_content_tools = seq_force_screen_content_tools + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pTimingInfo = pTimingInfo + ref[] +end + +struct StdVideoDecodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :reference_select && return (Ptr{UInt32}(x + 0), 17, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 20, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 24, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 25, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 27, 1) + f === :apply_grain && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :reference_select, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :apply_grain, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, reference_select::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, apply_grain::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.reference_select = reference_select + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.apply_grain = apply_grain + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1PictureInfo + data::NTuple{136, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :current_frame_id && return Ptr{UInt32}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :primary_ref_frame && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :reserved1 && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 16) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 20) + f === :delta_q_res && return Ptr{UInt8}(x + 24) + f === :delta_lf_res && return Ptr{UInt8}(x + 25) + f === :SkipModeFrame && return Ptr{NTuple{2, UInt8}}(x + 26) + f === :coded_denom && return Ptr{UInt8}(x + 28) + f === :reserved2 && return Ptr{NTuple{3, UInt8}}(x + 29) + f === :OrderHints && return Ptr{NTuple{8, UInt8}}(x + 32) + f === :expectedFrameId && return Ptr{NTuple{8, UInt32}}(x + 40) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 72) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 80) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 88) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 96) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 104) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 112) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 120) + f === :pFilmGrain && return Ptr{Ptr{StdVideoAV1FilmGrain}}(x + 128) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :current_frame_id, :OrderHint, :primary_ref_frame, :refresh_frame_flags, :reserved1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :SkipModeFrame, :coded_denom, :reserved2, :OrderHints, :expectedFrameId, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pFilmGrain, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1PictureInfo(flags::StdVideoDecodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, current_frame_id::UInt32, OrderHint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, reserved1::UInt8, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, SkipModeFrame::NTuple{2, UInt8}, coded_denom::UInt8, reserved2::NTuple{3, UInt8}, OrderHints::NTuple{8, UInt8}, expectedFrameId::NTuple{8, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pFilmGrain::Ptr{StdVideoAV1FilmGrain}) + ref = Ref{StdVideoDecodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.current_frame_id = current_frame_id + ptr.OrderHint = OrderHint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.reserved1 = reserved1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.SkipModeFrame = SkipModeFrame + ptr.coded_denom = coded_denom + ptr.reserved2 = reserved2 + ptr.OrderHints = OrderHints + ptr.expectedFrameId = expectedFrameId + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pFilmGrain = pFilmGrain + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeAV1ReferenceInfo + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeAV1ReferenceInfoFlags}(x + 0) + f === :frame_type && return Ptr{UInt8}(x + 4) + f === :RefFrameSignBias && return Ptr{UInt8}(x + 5) + f === :OrderHint && return Ptr{UInt8}(x + 6) + f === :SavedOrderHints && return Ptr{NTuple{8, UInt8}}(x + 7) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoDecodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeAV1ReferenceInfo, private::Bool = false) + (:flags, :frame_type, :RefFrameSignBias, :OrderHint, :SavedOrderHints, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeAV1ReferenceInfo(flags::StdVideoDecodeAV1ReferenceInfoFlags, frame_type::UInt8, RefFrameSignBias::UInt8, OrderHint::UInt8, SavedOrderHints::NTuple{8, UInt8}) + ref = Ref{StdVideoDecodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.RefFrameSignBias = RefFrameSignBias + ptr.OrderHint = OrderHint + ptr.SavedOrderHints = SavedOrderHints + ref[] +end + +struct VkVideoDecodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile + filmGrainSupport::VkBool32 +end + +struct VkVideoDecodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoAV1Level +end + +struct VkVideoDecodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkVideoDecodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + frameHeaderOffset::UInt32 + tileCount::UInt32 + pTileOffsets::Ptr{UInt32} + pTileSizes::Ptr{UInt32} +end + +struct VkVideoDecodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoDecodeAV1ReferenceInfo} +end + +struct StdVideoEncodeAV1DecoderModelInfo + buffer_delay_length_minus_1::UInt8 + buffer_removal_time_length_minus_1::UInt8 + frame_presentation_time_length_minus_1::UInt8 + reserved1::UInt8 + num_units_in_decoding_tick::UInt32 +end + +struct StdVideoEncodeAV1ExtensionHeader + temporal_id::UInt8 + spatial_id::UInt8 +end + +struct StdVideoEncodeAV1OperatingPointInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol) + f === :decoder_model_present_for_this_op && return (Ptr{UInt32}(x + 0), 0, 1) + f === :low_delay_mode_flag && return (Ptr{UInt32}(x + 0), 1, 1) + f === :initial_display_delay_present_for_this_op && return (Ptr{UInt32}(x + 0), 2, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 3, 29) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfoFlags, private::Bool = false) + (:decoder_model_present_for_this_op, :low_delay_mode_flag, :initial_display_delay_present_for_this_op, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfoFlags(decoder_model_present_for_this_op::UInt32, low_delay_mode_flag::UInt32, initial_display_delay_present_for_this_op::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1OperatingPointInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}, ref) + ptr.decoder_model_present_for_this_op = decoder_model_present_for_this_op + ptr.low_delay_mode_flag = low_delay_mode_flag + ptr.initial_display_delay_present_for_this_op = initial_display_delay_present_for_this_op + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1OperatingPointInfo + data::NTuple{20, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1OperatingPointInfoFlags}(x + 0) + f === :operating_point_idc && return Ptr{UInt16}(x + 4) + f === :seq_level_idx && return Ptr{UInt8}(x + 6) + f === :seq_tier && return Ptr{UInt8}(x + 7) + f === :decoder_buffer_delay && return Ptr{UInt32}(x + 8) + f === :encoder_buffer_delay && return Ptr{UInt32}(x + 12) + f === :initial_display_delay_minus_1 && return Ptr{UInt8}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1OperatingPointInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1OperatingPointInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1OperatingPointInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1OperatingPointInfo, private::Bool = false) + (:flags, :operating_point_idc, :seq_level_idx, :seq_tier, :decoder_buffer_delay, :encoder_buffer_delay, :initial_display_delay_minus_1, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1OperatingPointInfo(flags::StdVideoEncodeAV1OperatingPointInfoFlags, operating_point_idc::UInt16, seq_level_idx::UInt8, seq_tier::UInt8, decoder_buffer_delay::UInt32, encoder_buffer_delay::UInt32, initial_display_delay_minus_1::UInt8) + ref = Ref{StdVideoEncodeAV1OperatingPointInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1OperatingPointInfo}, ref) + ptr.flags = flags + ptr.operating_point_idc = operating_point_idc + ptr.seq_level_idx = seq_level_idx + ptr.seq_tier = seq_tier + ptr.decoder_buffer_delay = decoder_buffer_delay + ptr.encoder_buffer_delay = encoder_buffer_delay + ptr.initial_display_delay_minus_1 = initial_display_delay_minus_1 + ref[] +end + +struct StdVideoEncodeAV1PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :disable_cdf_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :use_superres && return (Ptr{UInt32}(x + 0), 2, 1) + f === :render_and_frame_size_different && return (Ptr{UInt32}(x + 0), 3, 1) + f === :allow_screen_content_tools && return (Ptr{UInt32}(x + 0), 4, 1) + f === :is_filter_switchable && return (Ptr{UInt32}(x + 0), 5, 1) + f === :force_integer_mv && return (Ptr{UInt32}(x + 0), 6, 1) + f === :frame_size_override_flag && return (Ptr{UInt32}(x + 0), 7, 1) + f === :buffer_removal_time_present_flag && return (Ptr{UInt32}(x + 0), 8, 1) + f === :allow_intrabc && return (Ptr{UInt32}(x + 0), 9, 1) + f === :frame_refs_short_signaling && return (Ptr{UInt32}(x + 0), 10, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 11, 1) + f === :is_motion_mode_switchable && return (Ptr{UInt32}(x + 0), 12, 1) + f === :use_ref_frame_mvs && return (Ptr{UInt32}(x + 0), 13, 1) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 14, 1) + f === :allow_warped_motion && return (Ptr{UInt32}(x + 0), 15, 1) + f === :reduced_tx_set && return (Ptr{UInt32}(x + 0), 16, 1) + f === :skip_mode_present && return (Ptr{UInt32}(x + 0), 17, 1) + f === :delta_q_present && return (Ptr{UInt32}(x + 0), 18, 1) + f === :delta_lf_present && return (Ptr{UInt32}(x + 0), 19, 1) + f === :delta_lf_multi && return (Ptr{UInt32}(x + 0), 20, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 21, 1) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 22, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 23, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 24, 1) + f === :UsesLr && return (Ptr{UInt32}(x + 0), 25, 1) + f === :usesChromaLr && return (Ptr{UInt32}(x + 0), 26, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 27, 1) + f === :showable_frame && return (Ptr{UInt32}(x + 0), 28, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :disable_cdf_update, :use_superres, :render_and_frame_size_different, :allow_screen_content_tools, :is_filter_switchable, :force_integer_mv, :frame_size_override_flag, :buffer_removal_time_present_flag, :allow_intrabc, :frame_refs_short_signaling, :allow_high_precision_mv, :is_motion_mode_switchable, :use_ref_frame_mvs, :disable_frame_end_update_cdf, :allow_warped_motion, :reduced_tx_set, :skip_mode_present, :delta_q_present, :delta_lf_present, :delta_lf_multi, :segmentation_enabled, :segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :UsesLr, :usesChromaLr, :show_frame, :showable_frame, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfoFlags(error_resilient_mode::UInt32, disable_cdf_update::UInt32, use_superres::UInt32, render_and_frame_size_different::UInt32, allow_screen_content_tools::UInt32, is_filter_switchable::UInt32, force_integer_mv::UInt32, frame_size_override_flag::UInt32, buffer_removal_time_present_flag::UInt32, allow_intrabc::UInt32, frame_refs_short_signaling::UInt32, allow_high_precision_mv::UInt32, is_motion_mode_switchable::UInt32, use_ref_frame_mvs::UInt32, disable_frame_end_update_cdf::UInt32, allow_warped_motion::UInt32, reduced_tx_set::UInt32, skip_mode_present::UInt32, delta_q_present::UInt32, delta_lf_present::UInt32, delta_lf_multi::UInt32, segmentation_enabled::UInt32, segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, UsesLr::UInt32, usesChromaLr::UInt32, show_frame::UInt32, showable_frame::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.disable_cdf_update = disable_cdf_update + ptr.use_superres = use_superres + ptr.render_and_frame_size_different = render_and_frame_size_different + ptr.allow_screen_content_tools = allow_screen_content_tools + ptr.is_filter_switchable = is_filter_switchable + ptr.force_integer_mv = force_integer_mv + ptr.frame_size_override_flag = frame_size_override_flag + ptr.buffer_removal_time_present_flag = buffer_removal_time_present_flag + ptr.allow_intrabc = allow_intrabc + ptr.frame_refs_short_signaling = frame_refs_short_signaling + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.is_motion_mode_switchable = is_motion_mode_switchable + ptr.use_ref_frame_mvs = use_ref_frame_mvs + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.allow_warped_motion = allow_warped_motion + ptr.reduced_tx_set = reduced_tx_set + ptr.skip_mode_present = skip_mode_present + ptr.delta_q_present = delta_q_present + ptr.delta_lf_present = delta_lf_present + ptr.delta_lf_multi = delta_lf_multi + ptr.segmentation_enabled = segmentation_enabled + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.UsesLr = UsesLr + ptr.usesChromaLr = usesChromaLr + ptr.show_frame = show_frame + ptr.showable_frame = showable_frame + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1PictureInfo + data::NTuple{152, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1PictureInfoFlags}(x + 0) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 4) + f === :frame_presentation_time && return Ptr{UInt32}(x + 8) + f === :current_frame_id && return Ptr{UInt32}(x + 12) + f === :order_hint && return Ptr{UInt8}(x + 16) + f === :primary_ref_frame && return Ptr{UInt8}(x + 17) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 18) + f === :coded_denom && return Ptr{UInt8}(x + 19) + f === :render_width_minus_1 && return Ptr{UInt16}(x + 20) + f === :render_height_minus_1 && return Ptr{UInt16}(x + 22) + f === :interpolation_filter && return Ptr{StdVideoAV1InterpolationFilter}(x + 24) + f === :TxMode && return Ptr{StdVideoAV1TxMode}(x + 28) + f === :delta_q_res && return Ptr{UInt8}(x + 32) + f === :delta_lf_res && return Ptr{UInt8}(x + 33) + f === :ref_order_hint && return Ptr{NTuple{8, UInt8}}(x + 34) + f === :ref_frame_idx && return Ptr{NTuple{7, Int8}}(x + 42) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 49) + f === :delta_frame_id_minus_1 && return Ptr{NTuple{7, UInt32}}(x + 52) + f === :pTileInfo && return Ptr{Ptr{StdVideoAV1TileInfo}}(x + 80) + f === :pQuantization && return Ptr{Ptr{StdVideoAV1Quantization}}(x + 88) + f === :pSegmentation && return Ptr{Ptr{StdVideoAV1Segmentation}}(x + 96) + f === :pLoopFilter && return Ptr{Ptr{StdVideoAV1LoopFilter}}(x + 104) + f === :pCDEF && return Ptr{Ptr{StdVideoAV1CDEF}}(x + 112) + f === :pLoopRestoration && return Ptr{Ptr{StdVideoAV1LoopRestoration}}(x + 120) + f === :pGlobalMotion && return Ptr{Ptr{StdVideoAV1GlobalMotion}}(x + 128) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 136) + f === :pBufferRemovalTimes && return Ptr{Ptr{UInt32}}(x + 144) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1PictureInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1PictureInfo, private::Bool = false) + (:flags, :frame_type, :frame_presentation_time, :current_frame_id, :order_hint, :primary_ref_frame, :refresh_frame_flags, :coded_denom, :render_width_minus_1, :render_height_minus_1, :interpolation_filter, :TxMode, :delta_q_res, :delta_lf_res, :ref_order_hint, :ref_frame_idx, :reserved1, :delta_frame_id_minus_1, :pTileInfo, :pQuantization, :pSegmentation, :pLoopFilter, :pCDEF, :pLoopRestoration, :pGlobalMotion, :pExtensionHeader, :pBufferRemovalTimes, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1PictureInfo(flags::StdVideoEncodeAV1PictureInfoFlags, frame_type::StdVideoAV1FrameType, frame_presentation_time::UInt32, current_frame_id::UInt32, order_hint::UInt8, primary_ref_frame::UInt8, refresh_frame_flags::UInt8, coded_denom::UInt8, render_width_minus_1::UInt16, render_height_minus_1::UInt16, interpolation_filter::StdVideoAV1InterpolationFilter, TxMode::StdVideoAV1TxMode, delta_q_res::UInt8, delta_lf_res::UInt8, ref_order_hint::NTuple{8, UInt8}, ref_frame_idx::NTuple{7, Int8}, reserved1::NTuple{3, UInt8}, delta_frame_id_minus_1::NTuple{7, UInt32}, pTileInfo::Ptr{StdVideoAV1TileInfo}, pQuantization::Ptr{StdVideoAV1Quantization}, pSegmentation::Ptr{StdVideoAV1Segmentation}, pLoopFilter::Ptr{StdVideoAV1LoopFilter}, pCDEF::Ptr{StdVideoAV1CDEF}, pLoopRestoration::Ptr{StdVideoAV1LoopRestoration}, pGlobalMotion::Ptr{StdVideoAV1GlobalMotion}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}, pBufferRemovalTimes::Ptr{UInt32}) + ref = Ref{StdVideoEncodeAV1PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1PictureInfo}, ref) + ptr.flags = flags + ptr.frame_type = frame_type + ptr.frame_presentation_time = frame_presentation_time + ptr.current_frame_id = current_frame_id + ptr.order_hint = order_hint + ptr.primary_ref_frame = primary_ref_frame + ptr.refresh_frame_flags = refresh_frame_flags + ptr.coded_denom = coded_denom + ptr.render_width_minus_1 = render_width_minus_1 + ptr.render_height_minus_1 = render_height_minus_1 + ptr.interpolation_filter = interpolation_filter + ptr.TxMode = TxMode + ptr.delta_q_res = delta_q_res + ptr.delta_lf_res = delta_lf_res + ptr.ref_order_hint = ref_order_hint + ptr.ref_frame_idx = ref_frame_idx + ptr.reserved1 = reserved1 + ptr.delta_frame_id_minus_1 = delta_frame_id_minus_1 + ptr.pTileInfo = pTileInfo + ptr.pQuantization = pQuantization + ptr.pSegmentation = pSegmentation + ptr.pLoopFilter = pLoopFilter + ptr.pCDEF = pCDEF + ptr.pLoopRestoration = pLoopRestoration + ptr.pGlobalMotion = pGlobalMotion + ptr.pExtensionHeader = pExtensionHeader + ptr.pBufferRemovalTimes = pBufferRemovalTimes + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol) + f === :disable_frame_end_update_cdf && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfoFlags, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfoFlags, private::Bool = false) + (:disable_frame_end_update_cdf, :segmentation_enabled, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfoFlags(disable_frame_end_update_cdf::UInt32, segmentation_enabled::UInt32, reserved::UInt32) + ref = Ref{StdVideoEncodeAV1ReferenceInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfoFlags}, ref) + ptr.disable_frame_end_update_cdf = disable_frame_end_update_cdf + ptr.segmentation_enabled = segmentation_enabled + ptr.reserved = reserved + ref[] +end + +struct StdVideoEncodeAV1ReferenceInfo + data::NTuple{24, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoEncodeAV1ReferenceInfoFlags}(x + 0) + f === :RefFrameId && return Ptr{UInt32}(x + 4) + f === :frame_type && return Ptr{StdVideoAV1FrameType}(x + 8) + f === :OrderHint && return Ptr{UInt8}(x + 12) + f === :reserved1 && return Ptr{NTuple{3, UInt8}}(x + 13) + f === :pExtensionHeader && return Ptr{Ptr{StdVideoEncodeAV1ExtensionHeader}}(x + 16) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoEncodeAV1ReferenceInfo, f::Symbol) + r = Ref{StdVideoEncodeAV1ReferenceInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoEncodeAV1ReferenceInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoEncodeAV1ReferenceInfo, private::Bool = false) + (:flags, :RefFrameId, :frame_type, :OrderHint, :reserved1, :pExtensionHeader, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoEncodeAV1ReferenceInfo(flags::StdVideoEncodeAV1ReferenceInfoFlags, RefFrameId::UInt32, frame_type::StdVideoAV1FrameType, OrderHint::UInt8, reserved1::NTuple{3, UInt8}, pExtensionHeader::Ptr{StdVideoEncodeAV1ExtensionHeader}) + ref = Ref{StdVideoEncodeAV1ReferenceInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoEncodeAV1ReferenceInfo}, ref) + ptr.flags = flags + ptr.RefFrameId = RefFrameId + ptr.frame_type = frame_type + ptr.OrderHint = OrderHint + ptr.reserved1 = reserved1 + ptr.pExtensionHeader = pExtensionHeader + ref[] +end + +@cenum VkVideoEncodeAV1PredictionModeKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3 + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1RateControlGroupKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkVideoEncodeAV1CapabilityFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 16 + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 32 + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1CapabilityFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1StdFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1StdFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1SuperblockSizeFlagsKHR = VkFlags + +@cenum VkVideoEncodeAV1RateControlFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 1 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 2 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 4 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 8 + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeAV1RateControlFlagsKHR = VkFlags + +struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeAV1::VkBool32 +end + +struct VkVideoEncodeAV1CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1CapabilityFlagsKHR + maxLevel::StdVideoAV1Level + codedPictureAlignment::VkExtent2D + maxTiles::VkExtent2D + minTileSize::VkExtent2D + maxTileSize::VkExtent2D + superblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR + maxSingleReferenceCount::UInt32 + singleReferenceNameMask::UInt32 + maxUnidirectionalCompoundReferenceCount::UInt32 + maxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + unidirectionalCompoundReferenceNameMask::UInt32 + maxBidirectionalCompoundReferenceCount::UInt32 + maxBidirectionalCompoundGroup1ReferenceCount::UInt32 + maxBidirectionalCompoundGroup2ReferenceCount::UInt32 + bidirectionalCompoundReferenceNameMask::UInt32 + maxTemporalLayerCount::UInt32 + maxSpatialLayerCount::UInt32 + maxOperatingPoints::UInt32 + minQIndex::UInt32 + maxQIndex::UInt32 + prefersGopRemainingFrames::VkBool32 + requiresGopRemainingFrames::VkBool32 + stdSyntaxFlags::VkVideoEncodeAV1StdFlagsKHR +end + +struct VkVideoEncodeAV1QIndexKHR + intraQIndex::UInt32 + predictiveQIndex::UInt32 + bipredictiveQIndex::UInt32 +end + +struct VkVideoEncodeAV1QualityLevelPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + preferredRateControlFlags::VkVideoEncodeAV1RateControlFlagsKHR + preferredGopFrameCount::UInt32 + preferredKeyFramePeriod::UInt32 + preferredConsecutiveBipredictiveFrameCount::UInt32 + preferredTemporalLayerCount::UInt32 + preferredConstantQIndex::VkVideoEncodeAV1QIndexKHR + preferredMaxSingleReferenceCount::UInt32 + preferredSingleReferenceNameMask::UInt32 + preferredMaxUnidirectionalCompoundReferenceCount::UInt32 + preferredMaxUnidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredUnidirectionalCompoundReferenceNameMask::UInt32 + preferredMaxBidirectionalCompoundReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup1ReferenceCount::UInt32 + preferredMaxBidirectionalCompoundGroup2ReferenceCount::UInt32 + preferredBidirectionalCompoundReferenceNameMask::UInt32 +end + +struct VkVideoEncodeAV1SessionCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMaxLevel::VkBool32 + maxLevel::StdVideoAV1Level +end + +struct VkVideoEncodeAV1SessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} + pStdDecoderModelInfo::Ptr{StdVideoEncodeAV1DecoderModelInfo} + stdOperatingPointCount::UInt32 + pStdOperatingPoints::Ptr{StdVideoEncodeAV1OperatingPointInfo} +end + +struct VkVideoEncodeAV1PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + predictionMode::VkVideoEncodeAV1PredictionModeKHR + rateControlGroup::VkVideoEncodeAV1RateControlGroupKHR + constantQIndex::UInt32 + pStdPictureInfo::Ptr{StdVideoEncodeAV1PictureInfo} + referenceNameSlotIndices::NTuple{7, Int32} + primaryReferenceCdfOnly::VkBool32 + generateObuExtensionHeader::VkBool32 +end + +struct VkVideoEncodeAV1DpbSlotInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdReferenceInfo::Ptr{StdVideoEncodeAV1ReferenceInfo} +end + +struct VkVideoEncodeAV1ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoAV1Profile +end + +struct VkVideoEncodeAV1FrameSizeKHR + intraFrameSize::UInt32 + predictiveFrameSize::UInt32 + bipredictiveFrameSize::UInt32 +end + +struct VkVideoEncodeAV1GopRemainingFrameInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useGopRemainingFrames::VkBool32 + gopRemainingIntra::UInt32 + gopRemainingPredictive::UInt32 + gopRemainingBipredictive::UInt32 +end + +struct VkVideoEncodeAV1RateControlInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkVideoEncodeAV1RateControlFlagsKHR + gopFrameCount::UInt32 + keyFramePeriod::UInt32 + consecutiveBipredictiveFrameCount::UInt32 + temporalLayerCount::UInt32 +end + +struct VkVideoEncodeAV1RateControlLayerInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + useMinQIndex::VkBool32 + minQIndex::VkVideoEncodeAV1QIndexKHR + useMaxQIndex::VkBool32 + maxQIndex::VkVideoEncodeAV1QIndexKHR + useMaxFrameSize::VkBool32 + maxFrameSize::VkVideoEncodeAV1FrameSizeKHR +end + +@cenum StdVideoVP9Profile::UInt32 begin + STD_VIDEO_VP9_PROFILE_0 = 0 + STD_VIDEO_VP9_PROFILE_1 = 1 + STD_VIDEO_VP9_PROFILE_2 = 2 + STD_VIDEO_VP9_PROFILE_3 = 3 + STD_VIDEO_VP9_PROFILE_INVALID = 2147483647 + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9Level::UInt32 begin + STD_VIDEO_VP9_LEVEL_1_0 = 0 + STD_VIDEO_VP9_LEVEL_1_1 = 1 + STD_VIDEO_VP9_LEVEL_2_0 = 2 + STD_VIDEO_VP9_LEVEL_2_1 = 3 + STD_VIDEO_VP9_LEVEL_3_0 = 4 + STD_VIDEO_VP9_LEVEL_3_1 = 5 + STD_VIDEO_VP9_LEVEL_4_0 = 6 + STD_VIDEO_VP9_LEVEL_4_1 = 7 + STD_VIDEO_VP9_LEVEL_5_0 = 8 + STD_VIDEO_VP9_LEVEL_5_1 = 9 + STD_VIDEO_VP9_LEVEL_5_2 = 10 + STD_VIDEO_VP9_LEVEL_6_0 = 11 + STD_VIDEO_VP9_LEVEL_6_1 = 12 + STD_VIDEO_VP9_LEVEL_6_2 = 13 + STD_VIDEO_VP9_LEVEL_INVALID = 2147483647 + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9FrameType::UInt32 begin + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0 + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1 + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 2147483647 + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ReferenceName::UInt32 begin + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0 + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1 + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2 + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3 + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 2147483647 + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9InterpolationFilter::UInt32 begin + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1 + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2 + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3 + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4 + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 2147483647 + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 2147483647 +end + +@cenum StdVideoVP9ColorSpace::UInt32 begin + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0 + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1 + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3 + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4 + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5 + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6 + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7 + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 2147483647 + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 2147483647 +end + +struct StdVideoVP9ColorConfigFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol) + f === :color_range && return (Ptr{UInt32}(x + 0), 0, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 1, 31) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfigFlags, f::Symbol) + r = Ref{StdVideoVP9ColorConfigFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfigFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9ColorConfigFlags, private::Bool = false) + (:color_range, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfigFlags(color_range::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9ColorConfigFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfigFlags}, ref) + ptr.color_range = color_range + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9ColorConfig + data::NTuple{12, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9ColorConfigFlags}(x + 0) + f === :BitDepth && return Ptr{UInt8}(x + 4) + f === :subsampling_x && return Ptr{UInt8}(x + 5) + f === :subsampling_y && return Ptr{UInt8}(x + 6) + f === :reserved1 && return Ptr{UInt8}(x + 7) + f === :color_space && return Ptr{StdVideoVP9ColorSpace}(x + 8) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9ColorConfig, f::Symbol) + r = Ref{StdVideoVP9ColorConfig}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9ColorConfig}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9ColorConfig, private::Bool = false) + (:flags, :BitDepth, :subsampling_x, :subsampling_y, :reserved1, :color_space, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9ColorConfig(flags::StdVideoVP9ColorConfigFlags, BitDepth::UInt8, subsampling_x::UInt8, subsampling_y::UInt8, reserved1::UInt8, color_space::StdVideoVP9ColorSpace) + ref = Ref{StdVideoVP9ColorConfig}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9ColorConfig}, ref) + ptr.flags = flags + ptr.BitDepth = BitDepth + ptr.subsampling_x = subsampling_x + ptr.subsampling_y = subsampling_y + ptr.reserved1 = reserved1 + ptr.color_space = color_space + ref[] +end + +struct StdVideoVP9LoopFilterFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol) + f === :loop_filter_delta_enabled && return (Ptr{UInt32}(x + 0), 0, 1) + f === :loop_filter_delta_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 2, 30) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilterFlags, f::Symbol) + r = Ref{StdVideoVP9LoopFilterFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilterFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9LoopFilterFlags, private::Bool = false) + (:loop_filter_delta_enabled, :loop_filter_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilterFlags(loop_filter_delta_enabled::UInt32, loop_filter_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9LoopFilterFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilterFlags}, ref) + ptr.loop_filter_delta_enabled = loop_filter_delta_enabled + ptr.loop_filter_delta_update = loop_filter_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9LoopFilter + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9LoopFilterFlags}(x + 0) + f === :loop_filter_level && return Ptr{UInt8}(x + 4) + f === :loop_filter_sharpness && return Ptr{UInt8}(x + 5) + f === :update_ref_delta && return Ptr{UInt8}(x + 6) + f === :loop_filter_ref_deltas && return Ptr{NTuple{4, Int8}}(x + 7) + f === :update_mode_delta && return Ptr{UInt8}(x + 11) + f === :loop_filter_mode_deltas && return Ptr{NTuple{2, Int8}}(x + 12) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9LoopFilter, f::Symbol) + r = Ref{StdVideoVP9LoopFilter}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9LoopFilter}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9LoopFilter, private::Bool = false) + (:flags, :loop_filter_level, :loop_filter_sharpness, :update_ref_delta, :loop_filter_ref_deltas, :update_mode_delta, :loop_filter_mode_deltas, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9LoopFilter(flags::StdVideoVP9LoopFilterFlags, loop_filter_level::UInt8, loop_filter_sharpness::UInt8, update_ref_delta::UInt8, loop_filter_ref_deltas::NTuple{4, Int8}, update_mode_delta::UInt8, loop_filter_mode_deltas::NTuple{2, Int8}) + ref = Ref{StdVideoVP9LoopFilter}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9LoopFilter}, ref) + ptr.flags = flags + ptr.loop_filter_level = loop_filter_level + ptr.loop_filter_sharpness = loop_filter_sharpness + ptr.update_ref_delta = update_ref_delta + ptr.loop_filter_ref_deltas = loop_filter_ref_deltas + ptr.update_mode_delta = update_mode_delta + ptr.loop_filter_mode_deltas = loop_filter_mode_deltas + ref[] +end + +struct StdVideoVP9SegmentationFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol) + f === :segmentation_update_map && return (Ptr{UInt32}(x + 0), 0, 1) + f === :segmentation_temporal_update && return (Ptr{UInt32}(x + 0), 1, 1) + f === :segmentation_update_data && return (Ptr{UInt32}(x + 0), 2, 1) + f === :segmentation_abs_or_delta_update && return (Ptr{UInt32}(x + 0), 3, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 4, 28) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9SegmentationFlags, f::Symbol) + r = Ref{StdVideoVP9SegmentationFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoVP9SegmentationFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoVP9SegmentationFlags, private::Bool = false) + (:segmentation_update_map, :segmentation_temporal_update, :segmentation_update_data, :segmentation_abs_or_delta_update, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9SegmentationFlags(segmentation_update_map::UInt32, segmentation_temporal_update::UInt32, segmentation_update_data::UInt32, segmentation_abs_or_delta_update::UInt32, reserved::UInt32) + ref = Ref{StdVideoVP9SegmentationFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9SegmentationFlags}, ref) + ptr.segmentation_update_map = segmentation_update_map + ptr.segmentation_temporal_update = segmentation_temporal_update + ptr.segmentation_update_data = segmentation_update_data + ptr.segmentation_abs_or_delta_update = segmentation_abs_or_delta_update + ptr.reserved = reserved + ref[] +end + +struct StdVideoVP9Segmentation + data::NTuple{88, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoVP9Segmentation}, f::Symbol) + f === :flags && return Ptr{StdVideoVP9SegmentationFlags}(x + 0) + f === :segmentation_tree_probs && return Ptr{NTuple{7, UInt8}}(x + 4) + f === :segmentation_pred_prob && return Ptr{NTuple{3, UInt8}}(x + 11) + f === :FeatureEnabled && return Ptr{NTuple{8, UInt8}}(x + 14) + f === :FeatureData && return Ptr{NTuple{8, NTuple{4, Int16}}}(x + 22) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoVP9Segmentation, f::Symbol) + r = Ref{StdVideoVP9Segmentation}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoVP9Segmentation}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoVP9Segmentation, private::Bool = false) + (:flags, :segmentation_tree_probs, :segmentation_pred_prob, :FeatureEnabled, :FeatureData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoVP9Segmentation(flags::StdVideoVP9SegmentationFlags, segmentation_tree_probs::NTuple{7, UInt8}, segmentation_pred_prob::NTuple{3, UInt8}, FeatureEnabled::NTuple{8, UInt8}, FeatureData::NTuple{8, NTuple{4, Int16}}) + ref = Ref{StdVideoVP9Segmentation}() + ptr = Base.unsafe_convert(Ptr{StdVideoVP9Segmentation}, ref) + ptr.flags = flags + ptr.segmentation_tree_probs = segmentation_tree_probs + ptr.segmentation_pred_prob = segmentation_pred_prob + ptr.FeatureEnabled = FeatureEnabled + ptr.FeatureData = FeatureData + ref[] +end + +struct StdVideoDecodeVP9PictureInfoFlags + data::NTuple{4, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol) + f === :error_resilient_mode && return (Ptr{UInt32}(x + 0), 0, 1) + f === :intra_only && return (Ptr{UInt32}(x + 0), 1, 1) + f === :allow_high_precision_mv && return (Ptr{UInt32}(x + 0), 2, 1) + f === :refresh_frame_context && return (Ptr{UInt32}(x + 0), 3, 1) + f === :frame_parallel_decoding_mode && return (Ptr{UInt32}(x + 0), 4, 1) + f === :segmentation_enabled && return (Ptr{UInt32}(x + 0), 5, 1) + f === :show_frame && return (Ptr{UInt32}(x + 0), 6, 1) + f === :UsePrevFrameMvs && return (Ptr{UInt32}(x + 0), 7, 1) + f === :reserved && return (Ptr{UInt32}(x + 0), 8, 24) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfoFlags, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfoFlags}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfoFlags}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfoFlags, private::Bool = false) + (:error_resilient_mode, :intra_only, :allow_high_precision_mv, :refresh_frame_context, :frame_parallel_decoding_mode, :segmentation_enabled, :show_frame, :UsePrevFrameMvs, :reserved, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfoFlags(error_resilient_mode::UInt32, intra_only::UInt32, allow_high_precision_mv::UInt32, refresh_frame_context::UInt32, frame_parallel_decoding_mode::UInt32, segmentation_enabled::UInt32, show_frame::UInt32, UsePrevFrameMvs::UInt32, reserved::UInt32) + ref = Ref{StdVideoDecodeVP9PictureInfoFlags}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfoFlags}, ref) + ptr.error_resilient_mode = error_resilient_mode + ptr.intra_only = intra_only + ptr.allow_high_precision_mv = allow_high_precision_mv + ptr.refresh_frame_context = refresh_frame_context + ptr.frame_parallel_decoding_mode = frame_parallel_decoding_mode + ptr.segmentation_enabled = segmentation_enabled + ptr.show_frame = show_frame + ptr.UsePrevFrameMvs = UsePrevFrameMvs + ptr.reserved = reserved + ref[] +end + +struct StdVideoDecodeVP9PictureInfo + data::NTuple{56, UInt8} +end + +function Base.getproperty(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol) + f === :flags && return Ptr{StdVideoDecodeVP9PictureInfoFlags}(x + 0) + f === :profile && return Ptr{StdVideoVP9Profile}(x + 4) + f === :frame_type && return Ptr{StdVideoVP9FrameType}(x + 8) + f === :frame_context_idx && return Ptr{UInt8}(x + 12) + f === :reset_frame_context && return Ptr{UInt8}(x + 13) + f === :refresh_frame_flags && return Ptr{UInt8}(x + 14) + f === :ref_frame_sign_bias_mask && return Ptr{UInt8}(x + 15) + f === :interpolation_filter && return Ptr{StdVideoVP9InterpolationFilter}(x + 16) + f === :base_q_idx && return Ptr{UInt8}(x + 20) + f === :delta_q_y_dc && return Ptr{Int8}(x + 21) + f === :delta_q_uv_dc && return Ptr{Int8}(x + 22) + f === :delta_q_uv_ac && return Ptr{Int8}(x + 23) + f === :tile_cols_log2 && return Ptr{UInt8}(x + 24) + f === :tile_rows_log2 && return Ptr{UInt8}(x + 25) + f === :reserved1 && return Ptr{NTuple{3, UInt16}}(x + 26) + f === :pColorConfig && return Ptr{Ptr{StdVideoVP9ColorConfig}}(x + 32) + f === :pLoopFilter && return Ptr{Ptr{StdVideoVP9LoopFilter}}(x + 40) + f === :pSegmentation && return Ptr{Ptr{StdVideoVP9Segmentation}}(x + 48) + return getfield(x, f) +end + +function Base.getproperty(x::StdVideoDecodeVP9PictureInfo, f::Symbol) + r = Ref{StdVideoDecodeVP9PictureInfo}(x) + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{StdVideoDecodeVP9PictureInfo}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::StdVideoDecodeVP9PictureInfo, private::Bool = false) + (:flags, :profile, :frame_type, :frame_context_idx, :reset_frame_context, :refresh_frame_flags, :ref_frame_sign_bias_mask, :interpolation_filter, :base_q_idx, :delta_q_y_dc, :delta_q_uv_dc, :delta_q_uv_ac, :tile_cols_log2, :tile_rows_log2, :reserved1, :pColorConfig, :pLoopFilter, :pSegmentation, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function StdVideoDecodeVP9PictureInfo(flags::StdVideoDecodeVP9PictureInfoFlags, profile::StdVideoVP9Profile, frame_type::StdVideoVP9FrameType, frame_context_idx::UInt8, reset_frame_context::UInt8, refresh_frame_flags::UInt8, ref_frame_sign_bias_mask::UInt8, interpolation_filter::StdVideoVP9InterpolationFilter, base_q_idx::UInt8, delta_q_y_dc::Int8, delta_q_uv_dc::Int8, delta_q_uv_ac::Int8, tile_cols_log2::UInt8, tile_rows_log2::UInt8, reserved1::NTuple{3, UInt16}, pColorConfig::Ptr{StdVideoVP9ColorConfig}, pLoopFilter::Ptr{StdVideoVP9LoopFilter}, pSegmentation::Ptr{StdVideoVP9Segmentation}) + ref = Ref{StdVideoDecodeVP9PictureInfo}() + ptr = Base.unsafe_convert(Ptr{StdVideoDecodeVP9PictureInfo}, ref) + ptr.flags = flags + ptr.profile = profile + ptr.frame_type = frame_type + ptr.frame_context_idx = frame_context_idx + ptr.reset_frame_context = reset_frame_context + ptr.refresh_frame_flags = refresh_frame_flags + ptr.ref_frame_sign_bias_mask = ref_frame_sign_bias_mask + ptr.interpolation_filter = interpolation_filter + ptr.base_q_idx = base_q_idx + ptr.delta_q_y_dc = delta_q_y_dc + ptr.delta_q_uv_dc = delta_q_uv_dc + ptr.delta_q_uv_ac = delta_q_uv_ac + ptr.tile_cols_log2 = tile_cols_log2 + ptr.tile_rows_log2 = tile_rows_log2 + ptr.reserved1 = reserved1 + ptr.pColorConfig = pColorConfig + ptr.pLoopFilter = pLoopFilter + ptr.pSegmentation = pSegmentation + ref[] +end + +struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoDecodeVP9::VkBool32 +end + +struct VkVideoDecodeVP9ProfileInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stdProfile::StdVideoVP9Profile +end + +struct VkVideoDecodeVP9CapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxLevel::StdVideoVP9Level +end + +struct VkVideoDecodeVP9PictureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdPictureInfo::Ptr{StdVideoDecodeVP9PictureInfo} + referenceNameSlotIndices::NTuple{3, Int32} + uncompressedHeaderOffset::UInt32 + compressedHeaderOffset::UInt32 + tilesOffset::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance1::VkBool32 +end + +struct VkVideoInlineQueryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queryPool::VkQueryPool + firstQuery::UInt32 + queryCount::UInt32 +end + +const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR = VkPhysicalDeviceVertexAttributeDivisorProperties + +const VkVertexInputBindingDivisorDescriptionKHR = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoKHR = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures + +struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unifiedImageLayouts::VkBool32 + unifiedImageLayoutsVideo::VkBool32 +end + +struct VkAttachmentFeedbackLoopInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + feedbackLoopEnable::VkBool32 +end + +const VkPhysicalDeviceShaderFloatControls2FeaturesKHR = VkPhysicalDeviceShaderFloatControls2Features + +const VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features + +const VkLineRasterizationModeKHR = VkLineRasterizationMode + +const VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures + +const VkPhysicalDeviceLineRasterizationPropertiesKHR = VkPhysicalDeviceLineRasterizationProperties + +const VkPipelineRasterizationLineStateCreateInfoKHR = VkPipelineRasterizationLineStateCreateInfo + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleKHR +const PFN_vkCmdSetLineStippleKHR = Ptr{Cvoid} + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +function vkCmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +@cenum VkTimeDomainKHR::UInt32 begin + VK_TIME_DOMAIN_DEVICE_KHR = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3 + 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_KHR = 2147483647 +end + +struct VkCalibratedTimestampInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsKHR +const PFN_vkGetCalibratedTimestampsKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR = VkPhysicalDeviceShaderExpectAssumeFeatures + +const VkPhysicalDeviceMaintenance6FeaturesKHR = VkPhysicalDeviceMaintenance6Features + +const VkPhysicalDeviceMaintenance6PropertiesKHR = VkPhysicalDeviceMaintenance6Properties + +const VkBindMemoryStatusKHR = VkBindMemoryStatus + +const VkBindDescriptorSetsInfoKHR = VkBindDescriptorSetsInfo + +const VkPushConstantsInfoKHR = VkPushConstantsInfo + +const VkPushDescriptorSetInfoKHR = VkPushDescriptorSetInfo + +const VkPushDescriptorSetWithTemplateInfoKHR = VkPushDescriptorSetWithTemplateInfo + +struct VkSetDescriptorBufferOffsetsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + firstSet::UInt32 + setCount::UInt32 + pBufferIndices::Ptr{UInt32} + pOffsets::Ptr{VkDeviceSize} +end + +struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + stageFlags::VkShaderStageFlags + layout::VkPipelineLayout + set::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets2KHR +const PFN_vkCmdBindDescriptorSets2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants2KHR +const PFN_vkCmdPushConstants2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSet2KHR +const PFN_vkCmdPushDescriptorSet2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplate2KHR +const PFN_vkCmdPushDescriptorSetWithTemplate2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsets2EXT +const PFN_vkCmdSetDescriptorBufferOffsets2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = Ptr{Cvoid} + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo) + ccall((:vkCmdBindDescriptorSets2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorSetsInfo}), commandBuffer, pBindDescriptorSetsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo) + ccall((:vkCmdPushConstants2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushConstants2KHR(commandBuffer, pPushConstantsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushConstantsInfo}), commandBuffer, pPushConstantsInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo) + ccall((:vkCmdPushDescriptorSet2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetInfo}), commandBuffer, pPushDescriptorSetInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo) + ccall((:vkCmdPushDescriptorSetWithTemplate2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPushDescriptorSetWithTemplateInfo}), commandBuffer, pPushDescriptorSetWithTemplateInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo) + ccall((:vkCmdSetDescriptorBufferOffsets2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSetDescriptorBufferOffsetsInfoEXT}), commandBuffer, pSetDescriptorBufferOffsetsInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +function vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBindDescriptorBufferEmbeddedSamplersInfoEXT}), commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo) +end + +@cenum VkVideoEncodeIntraRefreshModeFlagBitsKHR::UInt32 begin + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 1 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 2 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 4 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 8 + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkVideoEncodeIntraRefreshModeFlagsKHR = VkFlags + +struct VkVideoEncodeIntraRefreshCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshModes::VkVideoEncodeIntraRefreshModeFlagsKHR + maxIntraRefreshCycleDuration::UInt32 + maxIntraRefreshActiveReferencePictures::UInt32 + partitionIndependentIntraRefreshRegions::VkBool32 + nonRectangularIntraRefreshRegions::VkBool32 +end + +struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshMode::VkVideoEncodeIntraRefreshModeFlagBitsKHR +end + +struct VkVideoEncodeIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + intraRefreshCycleDuration::UInt32 + intraRefreshIndex::UInt32 +end + +struct VkVideoReferenceIntraRefreshInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + dirtyIntraRefreshRegions::UInt32 +end + +struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeIntraRefresh::VkBool32 +end + +struct VkVideoEncodeQuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxQuantizationMapExtent::VkExtent2D +end + +struct VkVideoFormatQuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMap::VkImageView + quantizationMapExtent::VkExtent2D +end + +struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + quantizationMapTexelSize::VkExtent2D +end + +struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoEncodeQuantizationMap::VkBool32 +end + +struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQpDelta::Int32 + maxQpDelta::Int32 +end + +struct VkVideoFormatH265QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleCtbSizes::VkVideoEncodeH265CtbSizeFlagsKHR +end + +struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + minQIndexDelta::Int32 + maxQIndexDelta::Int32 +end + +struct VkVideoFormatAV1QuantizationMapPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compatibleSuperblockSizes::VkVideoEncodeAV1SuperblockSizeFlagsKHR +end + +struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderRelaxedExtendedInstruction::VkBool32 +end + +@cenum VkPhysicalDeviceLayeredApiKHR::UInt32 begin + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0 + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1 + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3 + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4 + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance7FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance7::VkBool32 +end + +struct VkPhysicalDeviceMaintenance7PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustFragmentShadingRateAttachmentAccess::VkBool32 + separateDepthStencilAttachmentAccess::VkBool32 + maxDescriptorSetTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetTotalBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic::UInt32 +end + +struct VkPhysicalDeviceLayeredApiPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vendorID::UInt32 + deviceID::UInt32 + layeredAPI::VkPhysicalDeviceLayeredApiKHR + deviceName::NTuple{256, Cchar} +end + +struct VkPhysicalDeviceLayeredApiPropertiesListKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + layeredApiCount::UInt32 + pLayeredApis::Ptr{VkPhysicalDeviceLayeredApiPropertiesKHR} +end + +struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties2 +end + +const VkAccessFlags3KHR = VkFlags64 + +const VkAccessFlagBits3KHR = VkFlags64 + +struct VkPhysicalDeviceMaintenance8FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance8::VkBool32 +end + +struct VkMemoryBarrierAccessFlags3KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask3::VkAccessFlags3KHR + dstAccessMask3::VkAccessFlags3KHR +end + +@cenum VkDefaultVertexAttributeValueKHR::UInt32 begin + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1 + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDeviceMaintenance9FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maintenance9::VkBool32 +end + +struct VkPhysicalDeviceMaintenance9PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + image2DViewOf3DSparse::VkBool32 + defaultVertexAttributeValue::VkDefaultVertexAttributeValueKHR +end + +struct VkQueueFamilyOwnershipTransferPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + optimalImageTransferToQueueFamilies::UInt32 +end + +struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + videoMaintenance2::VkBool32 +end + +struct VkVideoDecodeH264InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSPS::Ptr{StdVideoH264SequenceParameterSet} + pStdPPS::Ptr{StdVideoH264PictureParameterSet} +end + +struct VkVideoDecodeH265InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdVPS::Ptr{StdVideoH265VideoParameterSet} + pStdSPS::Ptr{StdVideoH265SequenceParameterSet} + pStdPPS::Ptr{StdVideoH265PictureParameterSet} +end + +struct VkVideoDecodeAV1InlineSessionParametersInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pStdSequenceHeader::Ptr{StdVideoAV1SequenceHeader} +end + +struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClampZeroOne::VkBool32 +end + +struct VkPhysicalDeviceRobustness2FeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentModeFifoLatestReady::VkBool32 +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_CU_MODULE_NVX_EXT = 1000029000 + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 + 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_CUDA_MODULE_NV_EXT = 1000307000 + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 + 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 +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 +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 +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT +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 vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) + ccall(fptr, 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 vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) + ccall(fptr, 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 + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) + ccall(fptr, 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 +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, 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 +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT +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 vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) + ccall(fptr, 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 vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) + ccall(fptr, 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 vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) + ccall(fptr, 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 vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) + ccall(fptr, 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 vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +const VkCuModuleNVX_T = Cvoid + +const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} + +const VkCuFunctionNVX_T = Cvoid + +const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} + +struct VkCuModuleCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkCuModuleTexturingModeCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + use64bitTexturing::VkBool32 +end + +struct VkCuFunctionCreateInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkCuModuleNVX + pName::Ptr{Cchar} +end + +struct VkCuLaunchInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + _function::VkCuFunctionNVX + gridDimX::UInt32 + gridDimY::UInt32 + gridDimZ::UInt32 + blockDimX::UInt32 + blockDimY::UInt32 + blockDimZ::UInt32 + sharedMemBytes::UInt32 + paramCount::Csize_t + pParams::Ptr{Ptr{Cvoid}} + extraCount::Csize_t + pExtras::Ptr{Ptr{Cvoid}} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX +const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX +const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX +const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX +const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX +const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) + ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) + ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator) + ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator) + ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) + ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +end + +function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +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 +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetImageViewHandle64NVX +const PFN_vkGetImageViewHandle64NVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandleNVX(device, pInfo, fptr) + ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo) + ccall((:vkGetImageViewHandle64NVX, libvulkan), UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewHandle64NVX(device, pInfo, fptr) + ccall(fptr, UInt64, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD +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 vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, 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 +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 + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) + ccall(fptr, 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 +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 + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) + ccall(fptr, 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 + +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +const VkPipelineRobustnessBufferBehaviorEXT = VkPipelineRobustnessBufferBehavior + +const VkPipelineRobustnessImageBehaviorEXT = VkPipelineRobustnessImageBehavior + +const VkPhysicalDevicePipelineRobustnessFeaturesEXT = VkPhysicalDevicePipelineRobustnessFeatures + +const VkPhysicalDevicePipelineRobustnessPropertiesEXT = VkPhysicalDevicePipelineRobustnessProperties + +const VkPipelineRobustnessCreateInfoEXT = VkPipelineRobustnessCreateInfo + +@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 +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 + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) + ccall(fptr, 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 +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 + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) + ccall(fptr, 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 + +function vkReleaseDisplayEXT(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 + 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 +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) + ccall(fptr, 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 +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 + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) + ccall(fptr, 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 vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) + ccall(fptr, 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 vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) + ccall(fptr, 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 +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 + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) + ccall(fptr, 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 vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +struct VkMultiviewPerViewAttributesInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewAttributes::VkBool32 + perViewAttributesPositionXOnly::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 +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEnableEXT +const PFN_vkCmdSetDiscardRectangleEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleModeEXT +const PFN_vkCmdSetDiscardRectangleModeEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable) + ccall((:vkCmdSetDiscardRectangleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, discardRectangleEnable) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode) + ccall((:vkCmdSetDiscardRectangleModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +end + +function vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDiscardRectangleModeEXT), commandBuffer, discardRectangleMode) +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 +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 + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) + ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG + sType::VkStructureType + pNext::Ptr{Cvoid} + relaxedLineRasterization::VkBool32 +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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 + 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 +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 +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# 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 + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueEndDebugUtilsLabelEXT(queue, fptr) + ccall(fptr, Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) + ccall(fptr, 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 vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) + ccall(fptr, 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 vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) + ccall(fptr, 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 vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) + ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkAttachmentSampleCountInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + colorAttachmentCount::UInt32 + pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} + depthStencilAttachmentSamples::VkSampleCountFlagBits +end + +const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures + +const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties + +const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock + +const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo + +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 +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) + ccall(fptr, 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 vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) + ccall(fptr, 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 + +const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD + +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 + +struct VkDrmFormatModifierProperties2EXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +end + +struct VkDrmFormatModifierPropertiesList2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) + ccall(fptr, 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 +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT +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 vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) + ccall(fptr, 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 vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) + ccall(fptr, 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 vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) + ccall(fptr, 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 vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) + ccall(fptr, 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 +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 + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, 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 vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) + ccall(fptr, 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 vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureNV_T = Cvoid + +const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} + +@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 = 2 + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004 + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005 + 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_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 +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 VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin + 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 +end + +@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_FLIP_FACING_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 32 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + 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_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 + 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_MOTION_BIT_NV = 32 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 2048 + 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_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 2048 + 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 VkBindAccelerationStructureMemoryInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureNV + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkWriteDescriptorSetAccelerationStructureNV + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureNV} +end + +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), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) + 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end + +function Base.propertynames(x::VkAccelerationStructureInstanceKHR, private::Bool = false) + (:transform, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureInstanceKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) + ptr.transform = transform + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV +const PFN_vkCreateAccelerationStructureNV = 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_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_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 + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, 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 vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, 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 vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, 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 vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, 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 vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) + ccall(fptr, 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 vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) + ccall(fptr, 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 vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) + ccall(fptr, 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 vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, 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 vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) + ccall(fptr, 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 vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, 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 vkCompileDeferredNV(device, pipeline, shader, fptr) + ccall(fptr, 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 + +const VkQueueGlobalPriorityEXT = VkQueueGlobalPriority + +const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfo + +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 +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 + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD +const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +end + +function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, 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 + +const VkTimeDomainEXT = VkTimeDomainKHR + +const VkCalibratedTimestampInfoEXT = VkCalibratedTimestampInfoKHR + +# 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{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainKHR}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoKHR}, 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 + +const VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescription + +const VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfo + +const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures + +const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits + +const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags + +const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo + +const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback + +const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR + +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 +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 vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) end -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -struct StdVideoH265SpsFlags - data::NTuple{4, UInt8} +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function Base.getproperty(x::Ptr{StdVideoH265SpsFlags}, f::Symbol) - f === :sps_temporal_id_nesting_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :separate_colour_plane_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :conformance_window_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :sps_sub_layer_ordering_info_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :scaling_list_enabled_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :sps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :amp_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :sample_adaptive_offset_enabled_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :pcm_enabled_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :pcm_loop_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :long_term_ref_pics_present_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :sps_temporal_mvp_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :strong_intra_smoothing_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :vui_parameters_present_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :sps_extension_present_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :sps_range_extension_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :transform_skip_rotation_enabled_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :transform_skip_context_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :implicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :explicit_rdpcm_enabled_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :extended_precision_processing_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :intra_smoothing_disabled_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :high_precision_offsets_enabled_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :persistent_rice_adaptation_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :cabac_bypass_alignment_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :sps_scc_extension_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :sps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :palette_mode_enabled_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :sps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :intra_boundary_filtering_disabled_flag && return (Ptr{UInt32}(x + 0), 29, 1) - return getfield(x, f) +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 Base.getproperty(x::StdVideoH265SpsFlags, f::Symbol) - r = Ref{StdVideoH265SpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function Base.setproperty!(x::Ptr{StdVideoH265SpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 end -function StdVideoH265SpsFlags(sps_temporal_id_nesting_flag::UInt32, separate_colour_plane_flag::UInt32, conformance_window_flag::UInt32, sps_sub_layer_ordering_info_present_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_scc_extension_flag::UInt32, sps_curr_pic_ref_enabled_flag::UInt32, palette_mode_enabled_flag::UInt32, sps_palette_predictor_initializers_present_flag::UInt32, intra_boundary_filtering_disabled_flag::UInt32) - ref = Ref{StdVideoH265SpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265SpsFlags}, ref) - ptr.sps_temporal_id_nesting_flag = sps_temporal_id_nesting_flag - ptr.separate_colour_plane_flag = separate_colour_plane_flag - ptr.conformance_window_flag = conformance_window_flag - ptr.sps_sub_layer_ordering_info_present_flag = sps_sub_layer_ordering_info_present_flag - ptr.scaling_list_enabled_flag = scaling_list_enabled_flag - ptr.sps_scaling_list_data_present_flag = sps_scaling_list_data_present_flag - ptr.amp_enabled_flag = amp_enabled_flag - ptr.sample_adaptive_offset_enabled_flag = sample_adaptive_offset_enabled_flag - ptr.pcm_enabled_flag = pcm_enabled_flag - ptr.pcm_loop_filter_disabled_flag = pcm_loop_filter_disabled_flag - ptr.long_term_ref_pics_present_flag = long_term_ref_pics_present_flag - ptr.sps_temporal_mvp_enabled_flag = sps_temporal_mvp_enabled_flag - ptr.strong_intra_smoothing_enabled_flag = strong_intra_smoothing_enabled_flag - ptr.vui_parameters_present_flag = vui_parameters_present_flag - ptr.sps_extension_present_flag = sps_extension_present_flag - ptr.sps_range_extension_flag = sps_range_extension_flag - ptr.transform_skip_rotation_enabled_flag = transform_skip_rotation_enabled_flag - ptr.transform_skip_context_enabled_flag = transform_skip_context_enabled_flag - ptr.implicit_rdpcm_enabled_flag = implicit_rdpcm_enabled_flag - ptr.explicit_rdpcm_enabled_flag = explicit_rdpcm_enabled_flag - ptr.extended_precision_processing_flag = extended_precision_processing_flag - ptr.intra_smoothing_disabled_flag = intra_smoothing_disabled_flag - ptr.high_precision_offsets_enabled_flag = high_precision_offsets_enabled_flag - ptr.persistent_rice_adaptation_enabled_flag = persistent_rice_adaptation_enabled_flag - ptr.cabac_bypass_alignment_enabled_flag = cabac_bypass_alignment_enabled_flag - ptr.sps_scc_extension_flag = sps_scc_extension_flag - ptr.sps_curr_pic_ref_enabled_flag = sps_curr_pic_ref_enabled_flag - ptr.palette_mode_enabled_flag = palette_mode_enabled_flag - ptr.sps_palette_predictor_initializers_present_flag = sps_palette_predictor_initializers_present_flag - ptr.intra_boundary_filtering_disabled_flag = intra_boundary_filtering_disabled_flag - ref[] +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -struct StdVideoH265ShortTermRefPicSetFlags - data::NTuple{4, UInt8} +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 end -function Base.getproperty(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol) - f === :inter_ref_pic_set_prediction_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :delta_rps_sign && return (Ptr{UInt32}(x + 0), 1, 1) - return getfield(x, f) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorEnableNV +const PFN_vkCmdSetExclusiveScissorEnableNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) + ccall((:vkCmdSetExclusiveScissorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function Base.getproperty(x::StdVideoH265ShortTermRefPicSetFlags, f::Symbol) - r = Ref{StdVideoH265ShortTermRefPicSetFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables) end -function Base.setproperty!(x::Ptr{StdVideoH265ShortTermRefPicSetFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -function StdVideoH265ShortTermRefPicSetFlags(inter_ref_pic_set_prediction_flag::UInt32, delta_rps_sign::UInt32) - ref = Ref{StdVideoH265ShortTermRefPicSetFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265ShortTermRefPicSetFlags}, ref) - ptr.inter_ref_pic_set_prediction_flag = inter_ref_pic_set_prediction_flag - ptr.delta_rps_sign = delta_rps_sign - ref[] +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -struct StdVideoH265ShortTermRefPicSet - flags::StdVideoH265ShortTermRefPicSetFlags - delta_idx_minus1::UInt32 - use_delta_flag::UInt16 - abs_delta_rps_minus1::UInt16 - used_by_curr_pic_flag::UInt16 - used_by_curr_pic_s0_flag::UInt16 - used_by_curr_pic_s1_flag::UInt16 - reserved1::UInt16 - reserved2::UInt8 - reserved3::UInt8 - num_negative_pics::UInt8 - num_positive_pics::UInt8 - delta_poc_s0_minus1::NTuple{16, UInt16} - delta_poc_s1_minus1::NTuple{16, UInt16} +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -struct StdVideoH265SequenceParameterSet - flags::StdVideoH265SpsFlags - chroma_format_idc::StdVideoH265ChromaFormatIdc - 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 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::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 - reserved1::UInt8 - reserved2::UInt8 - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializers_minus1::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pProfileTierLevel::Ptr{StdVideoH265ProfileTierLevel} - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - pScalingLists::Ptr{StdVideoH265ScalingLists} - pShortTermRefPicSet::Ptr{StdVideoH265ShortTermRefPicSet} - pLongTermRefPicsSps::Ptr{StdVideoH265LongTermRefPicsSps} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +struct VkQueueFamilyCheckpointProperties2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags2 end -struct StdVideoH265PpsFlags - data::NTuple{4, UInt8} +struct VkCheckpointData2NV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlags2 + pCheckpointMarker::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{StdVideoH265PpsFlags}, f::Symbol) - f === :dependent_slice_segments_enabled_flag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :output_flag_present_flag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :sign_data_hiding_enabled_flag && return (Ptr{UInt32}(x + 0), 2, 1) - f === :cabac_init_present_flag && return (Ptr{UInt32}(x + 0), 3, 1) - f === :constrained_intra_pred_flag && return (Ptr{UInt32}(x + 0), 4, 1) - f === :transform_skip_enabled_flag && return (Ptr{UInt32}(x + 0), 5, 1) - f === :cu_qp_delta_enabled_flag && return (Ptr{UInt32}(x + 0), 6, 1) - f === :pps_slice_chroma_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 7, 1) - f === :weighted_pred_flag && return (Ptr{UInt32}(x + 0), 8, 1) - f === :weighted_bipred_flag && return (Ptr{UInt32}(x + 0), 9, 1) - f === :transquant_bypass_enabled_flag && return (Ptr{UInt32}(x + 0), 10, 1) - f === :tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 11, 1) - f === :entropy_coding_sync_enabled_flag && return (Ptr{UInt32}(x + 0), 12, 1) - f === :uniform_spacing_flag && return (Ptr{UInt32}(x + 0), 13, 1) - f === :loop_filter_across_tiles_enabled_flag && return (Ptr{UInt32}(x + 0), 14, 1) - f === :pps_loop_filter_across_slices_enabled_flag && return (Ptr{UInt32}(x + 0), 15, 1) - f === :deblocking_filter_control_present_flag && return (Ptr{UInt32}(x + 0), 16, 1) - f === :deblocking_filter_override_enabled_flag && return (Ptr{UInt32}(x + 0), 17, 1) - f === :pps_deblocking_filter_disabled_flag && return (Ptr{UInt32}(x + 0), 18, 1) - f === :pps_scaling_list_data_present_flag && return (Ptr{UInt32}(x + 0), 19, 1) - f === :lists_modification_present_flag && return (Ptr{UInt32}(x + 0), 20, 1) - f === :slice_segment_header_extension_present_flag && return (Ptr{UInt32}(x + 0), 21, 1) - f === :pps_extension_present_flag && return (Ptr{UInt32}(x + 0), 22, 1) - f === :cross_component_prediction_enabled_flag && return (Ptr{UInt32}(x + 0), 23, 1) - f === :chroma_qp_offset_list_enabled_flag && return (Ptr{UInt32}(x + 0), 24, 1) - f === :pps_curr_pic_ref_enabled_flag && return (Ptr{UInt32}(x + 0), 25, 1) - f === :residual_adaptive_colour_transform_enabled_flag && return (Ptr{UInt32}(x + 0), 26, 1) - f === :pps_slice_act_qp_offsets_present_flag && return (Ptr{UInt32}(x + 0), 27, 1) - f === :pps_palette_predictor_initializers_present_flag && return (Ptr{UInt32}(x + 0), 28, 1) - f === :monochrome_palette_flag && return (Ptr{UInt32}(x + 0), 29, 1) - f === :pps_range_extension_flag && return (Ptr{UInt32}(x + 0), 30, 1) - return getfield(x, f) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV +const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -function Base.getproperty(x::StdVideoH265PpsFlags, f::Symbol) - r = Ref{StdVideoH265PpsFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) end -function Base.setproperty!(x::Ptr{StdVideoH265PpsFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -function 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_initializers_present_flag::UInt32, monochrome_palette_flag::UInt32, pps_range_extension_flag::UInt32) - ref = Ref{StdVideoH265PpsFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoH265PpsFlags}, ref) - ptr.dependent_slice_segments_enabled_flag = dependent_slice_segments_enabled_flag - ptr.output_flag_present_flag = output_flag_present_flag - ptr.sign_data_hiding_enabled_flag = sign_data_hiding_enabled_flag - ptr.cabac_init_present_flag = cabac_init_present_flag - ptr.constrained_intra_pred_flag = constrained_intra_pred_flag - ptr.transform_skip_enabled_flag = transform_skip_enabled_flag - ptr.cu_qp_delta_enabled_flag = cu_qp_delta_enabled_flag - ptr.pps_slice_chroma_qp_offsets_present_flag = pps_slice_chroma_qp_offsets_present_flag - ptr.weighted_pred_flag = weighted_pred_flag - ptr.weighted_bipred_flag = weighted_bipred_flag - ptr.transquant_bypass_enabled_flag = transquant_bypass_enabled_flag - ptr.tiles_enabled_flag = tiles_enabled_flag - ptr.entropy_coding_sync_enabled_flag = entropy_coding_sync_enabled_flag - ptr.uniform_spacing_flag = uniform_spacing_flag - ptr.loop_filter_across_tiles_enabled_flag = loop_filter_across_tiles_enabled_flag - ptr.pps_loop_filter_across_slices_enabled_flag = pps_loop_filter_across_slices_enabled_flag - ptr.deblocking_filter_control_present_flag = deblocking_filter_control_present_flag - ptr.deblocking_filter_override_enabled_flag = deblocking_filter_override_enabled_flag - ptr.pps_deblocking_filter_disabled_flag = pps_deblocking_filter_disabled_flag - ptr.pps_scaling_list_data_present_flag = pps_scaling_list_data_present_flag - ptr.lists_modification_present_flag = lists_modification_present_flag - ptr.slice_segment_header_extension_present_flag = slice_segment_header_extension_present_flag - ptr.pps_extension_present_flag = pps_extension_present_flag - ptr.cross_component_prediction_enabled_flag = cross_component_prediction_enabled_flag - ptr.chroma_qp_offset_list_enabled_flag = chroma_qp_offset_list_enabled_flag - ptr.pps_curr_pic_ref_enabled_flag = pps_curr_pic_ref_enabled_flag - ptr.residual_adaptive_colour_transform_enabled_flag = residual_adaptive_colour_transform_enabled_flag - ptr.pps_slice_act_qp_offsets_present_flag = pps_slice_act_qp_offsets_present_flag - ptr.pps_palette_predictor_initializers_present_flag = pps_palette_predictor_initializers_present_flag - ptr.monochrome_palette_flag = monochrome_palette_flag - ptr.pps_range_extension_flag = pps_range_extension_flag - ref[] +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -struct StdVideoH265PictureParameterSet - flags::StdVideoH265PpsFlags - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - sps_video_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 - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - 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_plus3::Int8 - pps_num_palette_predictor_initializers::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - reserved1::UInt8 - reserved2::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - reserved3::UInt32 - pScalingLists::Ptr{StdVideoH265ScalingLists} - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) end -struct StdVideoDecodeH265PictureInfoFlags - data::NTuple{4, UInt8} +function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) end -function Base.getproperty(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol) - f === :IrapPicFlag && return (Ptr{UInt32}(x + 0), 0, 1) - f === :IdrPicFlag && return (Ptr{UInt32}(x + 0), 1, 1) - f === :IsReference && return (Ptr{UInt32}(x + 0), 2, 1) - f === :short_term_ref_pic_set_sps_flag && return (Ptr{UInt32}(x + 0), 3, 1) - return getfield(x, f) +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 end -function Base.getproperty(x::StdVideoDecodeH265PictureInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265PictureInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - 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 -function Base.setproperty!(x::Ptr{StdVideoDecodeH265PictureInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 end -function StdVideoDecodeH265PictureInfoFlags(IrapPicFlag::UInt32, IdrPicFlag::UInt32, IsReference::UInt32, short_term_ref_pic_set_sps_flag::UInt32) - ref = Ref{StdVideoDecodeH265PictureInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265PictureInfoFlags}, ref) - ptr.IrapPicFlag = IrapPicFlag - ptr.IdrPicFlag = IdrPicFlag - ptr.IsReference = IsReference - ptr.short_term_ref_pic_set_sps_flag = short_term_ref_pic_set_sps_flag - ref[] +@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 -struct StdVideoDecodeH265PictureInfo - flags::StdVideoDecodeH265PictureInfoFlags - sps_video_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - NumDeltaPocsOfRefRpsIdx::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - reserved::UInt16 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} +@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 -struct StdVideoDecodeH265ReferenceInfoFlags - data::NTuple{4, UInt8} +@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 -function Base.getproperty(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol) - f === :used_for_long_term_reference && return (Ptr{UInt32}(x + 0), 0, 1) - f === :unused_for_reference && return (Ptr{UInt32}(x + 0), 1, 1) +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::StdVideoDecodeH265ReferenceInfoFlags, f::Symbol) - r = Ref{StdVideoDecodeH265ReferenceInfoFlags}(x) - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, r) +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) fptr = getproperty(ptr, f) - begin - if fptr isa Ptr - return GC.@preserve(r, unsafe_load(fptr)) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +function Base.propertynames(x::VkPerformanceValueDataINTEL, private::Bool = false) + (:value32, :value64, :valueFloat, :valueBool, :valueString, if private + fieldnames(typeof(x)) else - (baseptr, offset, width) = fptr - ty = eltype(baseptr) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + () + end...) end -function Base.setproperty!(x::Ptr{StdVideoDecodeH265ReferenceInfoFlags}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end +const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} + +function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueDataINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) + if val isa UInt32 + ptr.value32 = val + elseif val isa UInt64 + ptr.value64 = val + elseif val isa Cfloat + ptr.valueFloat = val + elseif val isa VkBool32 + ptr.valueBool = val + elseif val isa Ptr{Cchar} + ptr.valueString = val end + ref[] end -function StdVideoDecodeH265ReferenceInfoFlags(used_for_long_term_reference::UInt32, unused_for_reference::UInt32) - ref = Ref{StdVideoDecodeH265ReferenceInfoFlags}() - ptr = Base.unsafe_convert(Ptr{StdVideoDecodeH265ReferenceInfoFlags}, ref) - ptr.used_for_long_term_reference = used_for_long_term_reference - ptr.unused_for_reference = unused_for_reference - ref[] +struct VkPerformanceValueINTEL + data::NTuple{16, UInt8} end -struct StdVideoDecodeH265ReferenceInfo - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 +function Base.getproperty(x::Ptr{VkPerformanceValueINTEL}, f::Symbol) + f === :type && return Ptr{VkPerformanceValueTypeINTEL}(x + 0) + f === :data && return Ptr{VkPerformanceValueDataINTEL}(x + 8) + return getfield(x, f) end -struct VkVideoDecodeH265ProfileInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc +function Base.getproperty(x::VkPerformanceValueINTEL, f::Symbol) + r = Ref{VkPerformanceValueINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkVideoDecodeH265CapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevelIdc::StdVideoH265LevelIdc +function Base.setproperty!(x::Ptr{VkPerformanceValueINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkVideoDecodeH265SessionParametersAddInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stdVPSCount::UInt32 - pStdVPSs::Ptr{StdVideoH265VideoParameterSet} - stdSPSCount::UInt32 - pStdSPSs::Ptr{StdVideoH265SequenceParameterSet} - stdPPSCount::UInt32 - pStdPPSs::Ptr{StdVideoH265PictureParameterSet} +function Base.propertynames(x::VkPerformanceValueINTEL, private::Bool = false) + (:type, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkVideoDecodeH265SessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxStdVPSCount::UInt32 - maxStdSPSCount::UInt32 - maxStdPPSCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoKHR} +function VkPerformanceValueINTEL(type::VkPerformanceValueTypeINTEL, data::VkPerformanceValueDataINTEL) + ref = Ref{VkPerformanceValueINTEL}() + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueINTEL}, ref) + ptr.type = type + ptr.data = data + ref[] end -struct VkVideoDecodeH265PictureInfoKHR +struct VkInitializePerformanceApiInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - sliceSegmentCount::UInt32 - pSliceSegmentOffsets::Ptr{UInt32} + pUserData::Ptr{Cvoid} end -struct VkVideoDecodeH265DpbSlotInfoKHR +struct VkQueryPoolPerformanceQueryCreateInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL end -@cenum VkQueueGlobalPriorityKHR::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024 - 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_KHR = 2147483647 -end +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL -struct VkDeviceQueueGlobalPriorityCreateInfoKHR +struct VkPerformanceMarkerInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR + marker::UInt64 end -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkPerformanceStreamMarkerInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 + marker::UInt32 end -struct VkQueueFamilyGlobalPriorityPropertiesKHR +struct VkPerformanceOverrideInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 end -const VkDriverIdKHR = VkDriverId - -const VkConformanceVersionKHR = VkConformanceVersion - -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties - -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence - -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} -const VkResolveModeFlagsKHR = VkResolveModeFlags +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} -const VkSemaphoreTypeKHR = VkSemaphoreType +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo +function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo +function vkUninitializePerformanceApiINTEL(device, fptr) + ccall(fptr, Cvoid, (VkDevice,), device) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) + ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -function vkSignalSemaphoreKHR(device, pSignalInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end -const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = VkPhysicalDeviceShaderTerminateInvocationFeatures +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end -@cenum VkFragmentShadingRateCombinerOpKHR::UInt32 begin - 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 +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) + ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} +function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) + ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD 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 + localDimmingSupport::VkBool32 end -struct VkPhysicalDeviceFragmentShadingRateKHR +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pFragmentShadingRateCount , VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateKHR ) ( VkCommandBuffer commandBuffer , const VkExtent2D * pFragmentSize , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) + localDimmingEnable::VkBool32 end -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout - -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout - -struct VkPhysicalDevicePresentWaitFeaturesKHR +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentWait::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForPresentKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t presentId , uint64_t timeout ) -const PFN_vkWaitForPresentKHR = Ptr{Cvoid} - -function vkWaitForPresentKHR(device, swapchain, presentId, timeout) - ccall((:vkWaitForPresentKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference end -function vkWaitForPresentKHR(device, swapchain, presentId, timeout, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, UInt64), device, swapchain, presentId, timeout) +struct VkRenderingFragmentDensityMapAttachmentInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + imageLayout::VkImageLayout end -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures - -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures - -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo - -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} +const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} +const VkShaderCorePropertiesFlagsAMD = VkFlags -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 end -function vkGetBufferDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderImageInt64Atomics::VkBool32 + sparseImageInt64Atomics::VkBool32 end -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 end -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fptr) - ccall(fptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat end -const VkDeferredOperationKHR_T = Cvoid - -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) end -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) end -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) -end +const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) -end +const VkToolPurposeFlagsEXT = VkToolPurposeFlags -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fptr) - ccall(fptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkGetDeferredOperationResultKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) end -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo -function vkDeferredOperationJoinKHR(device, operation, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +@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 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 +@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_SHADER_VALIDATION_CACHE_EXT = 7 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR +struct VkValidationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -struct VkPipelineInfoKHR +const VkComponentTypeNV = VkComponentTypeKHR + +const VkScopeNV = VkScopeKHR + +struct VkCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkPipelineExecutablePropertiesKHR +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPipelineExecutableInfoKHR +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 + cooperativeMatrixSupportedStages::VkShaderStageFlags end -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} -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) +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) 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) +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@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 __U_VkPipelineExecutableStatisticValueKHR = Union{VkBool32, Int64, UInt64, Cdouble} +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags -function VkPipelineExecutableStatisticValueKHR(val::__U_VkPipelineExecutableStatisticValueKHR) - ref = Ref{VkPipelineExecutableStatisticValueKHR}() - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, ref) - if val isa VkBool32 - ptr.b32 = val - elseif val isa Int64 - ptr.i64 = val - elseif val isa UInt64 - ptr.u64 = val - elseif val isa Cdouble - ptr.f64 = val - end - ref[] +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 end -struct VkPipelineExecutableStatisticKHR +struct VkPipelineCoverageReductionStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV end -struct VkPipelineExecutableInternalRepresentationKHR +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +@cenum VkProvokingVertexModeEXT::UInt32 begin + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 end -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +struct VkPhysicalDeviceProvokingVertexFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + provokingVertexLast::VkBool32 + transformFeedbackPreservesProvokingVertex::VkBool32 end -const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures - -const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = VkPhysicalDeviceShaderIntegerDotProductProperties - -struct VkPipelineLibraryCreateInfoKHR +struct VkPhysicalDeviceProvokingVertexPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} + provokingVertexModePerPipeline::VkBool32 + transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 end -struct VkPresentIdKHR +struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentIds::Ptr{UInt64} + provokingVertexMode::VkProvokingVertexModeEXT end -struct VkPhysicalDevicePresentIdFeaturesKHR +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - presentId::VkBool32 + flags::VkHeadlessSurfaceCreateFlagsEXT end -const VkPipelineStageFlags2KHR = VkPipelineStageFlags2 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -const VkPipelineStageFlagBits2KHR = VkPipelineStageFlagBits2 +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end -const VkAccessFlags2KHR = VkAccessFlags2 +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end -const VkAccessFlagBits2KHR = VkAccessFlagBits2 +const VkLineRasterizationModeEXT = VkLineRasterizationMode -const VkSubmitFlagBitsKHR = VkSubmitFlagBits +const VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures -const VkSubmitFlagsKHR = VkSubmitFlags +const VkPhysicalDeviceLineRasterizationPropertiesEXT = VkPhysicalDeviceLineRasterizationProperties -const VkMemoryBarrier2KHR = VkMemoryBarrier2 +const VkPipelineRasterizationLineStateCreateInfoEXT = VkPipelineRasterizationLineStateCreateInfo -const VkBufferMemoryBarrier2KHR = VkBufferMemoryBarrier2 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} -const VkImageMemoryBarrier2KHR = VkImageMemoryBarrier2 +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -const VkDependencyInfoKHR = VkDependencyInfo +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end -const VkSubmitInfo2KHR = VkSubmitInfo2 +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 VkSemaphoreSubmitInfoKHR = VkSemaphoreSubmitInfo +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -const VkCommandBufferSubmitInfoKHR = VkCommandBufferSubmitInfo +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} -const VkPhysicalDeviceSynchronization2FeaturesKHR = VkPhysicalDeviceSynchronization2Features +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end -struct VkQueueFamilyCheckpointProperties2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2 +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) + ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) end -struct VkCheckpointData2NV +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2 - pCheckpointMarker::Ptr{Cvoid} + extendedDynamicState::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent2KHR ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags2 stageMask ) -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents2KHR ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , const VkDependencyInfo * pDependencyInfos ) -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier2KHR ) ( VkCommandBuffer commandBuffer , const VkDependencyInfo * pDependencyInfo ) -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp2KHR ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit2KHR ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo2 * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarker2AMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags2 stage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +# 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 -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfo}), commandBuffer, event, pDependencyInfo) +function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2), commandBuffer, event, stageMask) +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfo}), commandBuffer, eventCount, pEvents, pDependencyInfos) +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfo}), commandBuffer, pDependencyInfo) +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +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 vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fptr) - ccall(fptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2}, VkFence), queue, submitCount, pSubmits, fence) +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) end -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - triStripVertexOrderIndependentOfProvokingVertex::VkBool32 +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupUniformControlFlow::VkBool32 +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) end -const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) + ccall(fptr, 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 vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) end -const VkCopyBufferInfo2KHR = VkCopyBufferInfo2 +const VkHostImageCopyFlagBitsEXT = VkHostImageCopyFlagBits + +const VkHostImageCopyFlagsEXT = VkHostImageCopyFlags -const VkCopyImageInfo2KHR = VkCopyImageInfo2 +const VkPhysicalDeviceHostImageCopyFeaturesEXT = VkPhysicalDeviceHostImageCopyFeatures -const VkCopyBufferToImageInfo2KHR = VkCopyBufferToImageInfo2 +const VkPhysicalDeviceHostImageCopyPropertiesEXT = VkPhysicalDeviceHostImageCopyProperties -const VkCopyImageToBufferInfo2KHR = VkCopyImageToBufferInfo2 +const VkMemoryToImageCopyEXT = VkMemoryToImageCopy -const VkBlitImageInfo2KHR = VkBlitImageInfo2 +const VkImageToMemoryCopyEXT = VkImageToMemoryCopy -const VkResolveImageInfo2KHR = VkResolveImageInfo2 +const VkCopyMemoryToImageInfoEXT = VkCopyMemoryToImageInfo -const VkBufferCopy2KHR = VkBufferCopy2 +const VkCopyImageToMemoryInfoEXT = VkCopyImageToMemoryInfo -const VkImageCopy2KHR = VkImageCopy2 +const VkCopyImageToImageInfoEXT = VkCopyImageToImageInfo -const VkImageBlit2KHR = VkImageBlit2 +const VkHostImageLayoutTransitionInfoEXT = VkHostImageLayoutTransitionInfo -const VkBufferImageCopy2KHR = VkBufferImageCopy2 +const VkSubresourceHostMemcpySizeEXT = VkSubresourceHostMemcpySize -const VkImageResolve2KHR = VkImageResolve2 +const VkHostImageCopyDevicePerformanceQueryEXT = VkHostImageCopyDevicePerformanceQuery -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferInfo2 * pCopyBufferInfo ) -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} +const VkSubresourceLayout2EXT = VkSubresourceLayout2 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageInfo2 * pCopyImageInfo ) -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} +const VkImageSubresource2EXT = VkImageSubresource2 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToImageEXT +const PFN_vkCopyMemoryToImageEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer2KHR ) ( VkCommandBuffer commandBuffer , const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToMemoryEXT +const PFN_vkCopyImageToMemoryEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage2KHR ) ( VkCommandBuffer commandBuffer , const VkBlitImageInfo2 * pBlitImageInfo ) -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyImageToImageEXT +const PFN_vkCopyImageToImageEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage2KHR ) ( VkCommandBuffer commandBuffer , const VkResolveImageInfo2 * pResolveImageInfo ) -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkTransitionImageLayoutEXT +const PFN_vkTransitionImageLayoutEXT = Ptr{Cvoid} -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT +const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2}), commandBuffer, pCopyBufferInfo) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo) + ccall((:vkCopyMemoryToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCopyMemoryToImageEXT(device, pCopyMemoryToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyMemoryToImageInfo}), device, pCopyMemoryToImageInfo) end -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2}), commandBuffer, pCopyImageInfo) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo) + ccall((:vkCopyImageToMemoryEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCopyImageToMemoryEXT(device, pCopyImageToMemoryInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToMemoryInfo}), device, pCopyImageToMemoryInfo) end -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2}), commandBuffer, pCopyBufferToImageInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo) + ccall((:vkCopyImageToImageEXT, libvulkan), VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkCopyImageToImageEXT(device, pCopyImageToImageInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkCopyImageToImageInfo}), device, pCopyImageToImageInfo) end -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2}), commandBuffer, pCopyImageToBufferInfo) +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions) + ccall((:vkTransitionImageLayoutEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkTransitionImageLayoutEXT(device, transitionCount, pTransitions, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkHostImageLayoutTransitionInfo}), device, transitionCount, pTransitions) end -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2}), commandBuffer, pBlitImageInfo) +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) + ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2}, Ptr{VkSubresourceLayout2}), device, image, pSubresource, pLayout) end -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2}), commandBuffer, pResolveImageInfo) +struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryMapPlaced::VkBool32 + memoryMapRangePlaced::VkBool32 + memoryUnmapReserve::VkBool32 end -const VkFormatFeatureFlags2KHR = VkFormatFeatureFlags2 - -const VkFormatFeatureFlagBits2KHR = VkFormatFeatureFlagBits2 - -const VkFormatProperties3KHR = VkFormatProperties3 +struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minPlacedMemoryMapAlignment::VkDeviceSize +end -struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +struct VkMemoryMapPlacedInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMaintenance1::VkBool32 - rayTracingPipelineTraceRaysIndirect2::VkBool32 + pPlacedAddress::Ptr{Cvoid} end -struct VkTraceRaysIndirectCommand2KHR - raygenShaderRecordAddress::VkDeviceAddress - raygenShaderRecordSize::VkDeviceSize - missShaderBindingTableAddress::VkDeviceAddress - missShaderBindingTableSize::VkDeviceSize - missShaderBindingTableStride::VkDeviceSize - hitShaderBindingTableAddress::VkDeviceAddress - hitShaderBindingTableSize::VkDeviceSize - hitShaderBindingTableStride::VkDeviceSize - callableShaderBindingTableAddress::VkDeviceAddress - callableShaderBindingTableSize::VkDeviceSize - callableShaderBindingTableStride::VkDeviceSize - width::UInt32 - height::UInt32 - depth::UInt32 +struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat16Atomics::VkBool32 + shaderBufferFloat16AtomicAdd::VkBool32 + shaderBufferFloat16AtomicMinMax::VkBool32 + shaderBufferFloat32AtomicMinMax::VkBool32 + shaderBufferFloat64AtomicMinMax::VkBool32 + shaderSharedFloat16Atomics::VkBool32 + shaderSharedFloat16AtomicAdd::VkBool32 + shaderSharedFloat16AtomicMinMax::VkBool32 + shaderSharedFloat32AtomicMinMax::VkBool32 + shaderSharedFloat64AtomicMinMax::VkBool32 + shaderImageFloat32AtomicMinMax::VkBool32 + sparseImageFloat32AtomicMinMax::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirect2KHR ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirect2KHR = Ptr{Cvoid} +const VkPresentScalingFlagBitsEXT = VkPresentScalingFlagBitsKHR -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirect2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) -end +const VkPresentScalingFlagsEXT = VkPresentScalingFlagsKHR -function vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress), commandBuffer, indirectDeviceAddress) -end +const VkPresentGravityFlagBitsEXT = VkPresentGravityFlagBitsKHR -const VkPhysicalDeviceMaintenance4FeaturesKHR = VkPhysicalDeviceMaintenance4Features +const VkPresentGravityFlagsEXT = VkPresentGravityFlagsKHR -const VkPhysicalDeviceMaintenance4PropertiesKHR = VkPhysicalDeviceMaintenance4Properties +const VkSurfacePresentModeEXT = VkSurfacePresentModeKHR -const VkDeviceBufferMemoryRequirementsKHR = VkDeviceBufferMemoryRequirements +const VkSurfacePresentScalingCapabilitiesEXT = VkSurfacePresentScalingCapabilitiesKHR -const VkDeviceImageMemoryRequirementsKHR = VkDeviceImageMemoryRequirements +const VkSurfacePresentModeCompatibilityEXT = VkSurfacePresentModeCompatibilityKHR -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceBufferMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceBufferMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceBufferMemoryRequirementsKHR = Ptr{Cvoid} +const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetDeviceImageMemoryRequirementsKHR = Ptr{Cvoid} +const VkSwapchainPresentFenceInfoEXT = VkSwapchainPresentFenceInfoKHR -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceImageSparseMemoryRequirementsKHR ) ( VkDevice device , const VkDeviceImageMemoryRequirements * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = Ptr{Cvoid} +const VkSwapchainPresentModesCreateInfoEXT = VkSwapchainPresentModesCreateInfoKHR -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceBufferMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end +const VkSwapchainPresentModeInfoEXT = VkSwapchainPresentModeInfoKHR -function vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceBufferMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end +const VkSwapchainPresentScalingCreateInfoEXT = VkSwapchainPresentScalingCreateInfoKHR -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetDeviceImageMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end +const VkReleaseSwapchainImagesInfoEXT = VkReleaseSwapchainImagesInfoKHR -function vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT +const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetDeviceImageSparseMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) + ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -function vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceImageMemoryRequirements}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoKHR}), device, pReleaseInfo) end -const VkDebugReportCallbackEXT_T = Cvoid +const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} +const VkIndirectCommandsLayoutNV_T = Cvoid -@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_CU_MODULE_NVX_EXT = 1000029000 - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001 - 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_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000 - 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 +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_DRAW_MESH_TASKS_NV = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 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 +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -const VkDebugReportFlagsEXT = VkFlags +const VkIndirectStateFlagsNV = 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} +@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 -struct VkDebugReportCallbackCreateInfoEXT +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 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} +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 end -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType 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) +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 end -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize end -struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkIndirectCommandsLayoutTokenNV sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD + 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 VkDebugMarkerObjectNameInfoEXT +struct VkIndirectCommandsLayoutCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -struct VkDebugMarkerObjectTagInfoEXT +struct VkGeneratedCommandsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::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 VkDebugMarkerMarkerInfoEXT +struct VkGeneratedCommandsMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdDebugMarkerEndEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -struct VkDedicatedAllocationBufferCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 + inheritedViewportScissor2D::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkCommandBufferInheritanceViewportScissorInfoNV 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 + viewportScissor2D::VkBool32 + viewportDepthCount::UInt32 + pViewportDepths::Ptr{VkViewport} end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT 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) + texelBufferAlignment::VkBool32 end -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) -end +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR end -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +@cenum VkDepthBiasRepresentationEXT::UInt32 begin + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0 + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1 + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2 + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 2147483647 end -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +struct VkPhysicalDeviceDepthBiasControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasControl::VkBool32 + leastRepresentableValueForceUnormRepresentation::VkBool32 + floatRepresentation::VkBool32 + depthBiasExact::VkBool32 end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +struct VkDepthBiasInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat end -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +struct VkDepthBiasRepresentationInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthBiasRepresentation::VkDepthBiasRepresentationEXT + depthBiasExact::VkBool32 end -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias2EXT +const PFN_vkCmdSetDepthBias2EXT = Ptr{Cvoid} -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo) + ccall((:vkCmdSetDepthBias2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) 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) +function vkCmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDepthBiasInfoEXT}), commandBuffer, pDepthBiasInfo) end -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin + 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 end -const VkCuModuleNVX_T = Cvoid - -const VkCuModuleNVX = Ptr{VkCuModuleNVX_T} - -const VkCuFunctionNVX_T = Cvoid - -const VkCuFunctionNVX = Ptr{VkCuFunctionNVX_T} +const VkDeviceMemoryReportFlagsEXT = VkFlags -struct VkCuModuleCreateInfoNVX +struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dataSize::Csize_t - pData::Ptr{Cvoid} + deviceMemoryReport::VkBool32 end -struct VkCuFunctionCreateInfoNVX +struct VkDeviceMemoryReportCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - _module::VkCuModuleNVX - pName::Ptr{Cchar} + flags::VkDeviceMemoryReportFlagsEXT + type::VkDeviceMemoryReportEventTypeEXT + memoryObjectId::UInt64 + size::VkDeviceSize + objectType::VkObjectType + objectHandle::UInt64 + heapIndex::UInt32 end -struct VkCuLaunchInfoNVX +# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT +const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} + +struct VkDeviceDeviceMemoryReportCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - _function::VkCuFunctionNVX - gridDimX::UInt32 - gridDimY::UInt32 - gridDimZ::UInt32 - blockDimX::UInt32 - blockDimY::UInt32 - blockDimZ::UInt32 - sharedMemBytes::UInt32 - paramCount::Csize_t - pParams::Ptr{Ptr{Cvoid}} - extraCount::Csize_t - pExtras::Ptr{Ptr{Cvoid}} + flags::VkDeviceMemoryReportFlagsEXT + pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT + pUserData::Ptr{Cvoid} end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuModuleNVX ) ( VkDevice device , const VkCuModuleCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuModuleNVX * pModule ) -const PFN_vkCreateCuModuleNVX = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT +const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCuFunctionNVX ) ( VkDevice device , const VkCuFunctionCreateInfoNVX * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCuFunctionNVX * pFunction ) -const PFN_vkCreateCuFunctionNVX = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT +const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuModuleNVX ) ( VkDevice device , VkCuModuleNVX module , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuModuleNVX = Ptr{Cvoid} +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) + ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyCuFunctionNVX ) ( VkDevice device , VkCuFunctionNVX function , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCuFunctionNVX = Ptr{Cvoid} +function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCuLaunchKernelNVX ) ( VkCommandBuffer commandBuffer , const VkCuLaunchInfoNVX * pLaunchInfo ) -const PFN_vkCmdCuLaunchKernelNVX = Ptr{Cvoid} +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) + ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule) - ccall((:vkCreateCuModuleNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) end -function vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuModuleCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuModuleNVX}), device, pCreateInfo, pAllocator, pModule) +const VkPhysicalDeviceRobustness2FeaturesEXT = VkPhysicalDeviceRobustness2FeaturesKHR + +const VkPhysicalDeviceRobustness2PropertiesEXT = VkPhysicalDeviceRobustness2PropertiesKHR + +struct VkSamplerCustomBorderColorCreateInfoEXT + data::NTuple{40, UInt8} end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction) - ccall((:vkCreateCuFunctionNVX, libvulkan), VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :customBorderColor && return Ptr{VkClearColorValue}(x + 16) + f === :format && return Ptr{VkFormat}(x + 32) + return getfield(x, f) end -function vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkCuFunctionCreateInfoNVX}, Ptr{VkAllocationCallbacks}, Ptr{VkCuFunctionNVX}), device, pCreateInfo, pAllocator, pFunction) +function Base.getproperty(x::VkSamplerCustomBorderColorCreateInfoEXT, f::Symbol) + r = Ref{VkSamplerCustomBorderColorCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkDestroyCuModuleNVX(device, _module, pAllocator) - ccall((:vkDestroyCuModuleNVX, libvulkan), Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.setproperty!(x::Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyCuModuleNVX(device, _module, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuModuleNVX, Ptr{VkAllocationCallbacks}), device, _module, pAllocator) +function Base.propertynames(x::VkSamplerCustomBorderColorCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :customBorderColor, :format, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkDestroyCuFunctionNVX(device, _function, pAllocator) - ccall((:vkDestroyCuFunctionNVX, libvulkan), Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +function VkSamplerCustomBorderColorCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, customBorderColor::VkClearColorValue, format::VkFormat) + ref = Ref{VkSamplerCustomBorderColorCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkSamplerCustomBorderColorCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.customBorderColor = customBorderColor + ptr.format = format + ref[] end -function vkDestroyCuFunctionNVX(device, _function, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkCuFunctionNVX, Ptr{VkAllocationCallbacks}), device, _function, pAllocator) +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo) - ccall((:vkCmdCuLaunchKernelNVX, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -function vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCuLaunchInfoNVX}), commandBuffer, pLaunchInfo) +struct VkPhysicalDevicePresentBarrierFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentBarrier::VkBool32 end -struct VkImageViewHandleInfoNVX +struct VkSurfaceCapabilitiesPresentBarrierNV sType::VkStructureType pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler + presentBarrierSupported::VkBool32 end -struct VkImageViewAddressPropertiesNVX +struct VkSwapchainPresentBarrierCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize + presentBarrierEnable::VkBool32 end -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} +const VkPrivateDataSlotEXT = VkPrivateDataSlot -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} +const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures -function vkGetImageViewHandleNVX(device, pInfo, fptr) - ccall(fptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end +const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo -function vkGetImageViewAddressNVX(device, imageView, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -# 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_vkDestroyPrivateDataSlotEXT +const PFN_vkDestroyPrivateDataSlotEXT = 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} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT +const PFN_vkSetPrivateDataEXT = 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) +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) 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) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) 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 +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) + ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) 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} +const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures -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) +@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) -end +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags -struct VkPhysicalDeviceCornerSampledImageFeaturesNV +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV 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 + diagnosticsConfig::VkBool32 end -const VkExternalMemoryFeatureFlagsNV = VkFlags - -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV 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) +@cenum VkTileShadingRenderPassFlagBitsQCOM::UInt32 begin + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 1 + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 2 + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 2147483647 end -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) -end +const VkTileShadingRenderPassFlagsQCOM = VkFlags -struct VkExternalMemoryImageCreateInfoNV +struct VkPhysicalDeviceTileShadingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV + tileShading::VkBool32 + tileShadingFragmentStage::VkBool32 + tileShadingColorAttachments::VkBool32 + tileShadingDepthAttachments::VkBool32 + tileShadingStencilAttachments::VkBool32 + tileShadingInputAttachments::VkBool32 + tileShadingSampledAttachments::VkBool32 + tileShadingPerTileDraw::VkBool32 + tileShadingPerTileDispatch::VkBool32 + tileShadingDispatchTile::VkBool32 + tileShadingApron::VkBool32 + tileShadingAnisotropicApron::VkBool32 + tileShadingAtomicOps::VkBool32 + tileShadingImageProcessing::VkBool32 end -struct VkExportMemoryAllocateInfoNV +struct VkPhysicalDeviceTileShadingPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV + maxApronSize::UInt32 + preferNonCoherent::VkBool32 + tileGranularity::VkExtent2D + maxTileShadingRate::VkExtent2D end -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +struct VkRenderPassTileShadingCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTileShadingRenderPassFlagsQCOM + tileApronSize::VkExtent2D end -struct VkValidationFlagsEXT +struct VkPerTileBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = VkPhysicalDeviceTextureCompressionASTCHDRFeatures - -struct VkImageViewASTCDecodeModeEXT +struct VkPerTileEndInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - decodeMode::VkFormat end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkDispatchTileInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 end -@cenum VkPipelineRobustnessBufferBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 2147483647 +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchTileQCOM +const PFN_vkCmdDispatchTileQCOM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginPerTileExecutionQCOM +const PFN_vkCmdBeginPerTileExecutionQCOM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndPerTileExecutionQCOM +const PFN_vkCmdEndPerTileExecutionQCOM = Ptr{Cvoid} + +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo) + ccall((:vkCmdDispatchTileQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -@cenum VkPipelineRobustnessImageBehaviorEXT::UInt32 begin - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3 - VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 2147483647 +function vkCmdDispatchTileQCOM(commandBuffer, pDispatchTileInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDispatchTileInfoQCOM}), commandBuffer, pDispatchTileInfo) end -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo) + ccall((:vkCmdBeginPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) end -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT +function vkCmdBeginPerTileExecutionQCOM(commandBuffer, pPerTileBeginInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileBeginInfoQCOM}), commandBuffer, pPerTileBeginInfo) +end + +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo) + ccall((:vkCmdEndPerTileExecutionQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) +end + +function vkCmdEndPerTileExecutionQCOM(commandBuffer, pPerTileEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkPerTileEndInfoQCOM}), commandBuffer, pPerTileEndInfo) end -struct VkPipelineRobustnessCreateInfoEXT +struct VkQueryLowLatencySupportNV sType::VkStructureType pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT + pQueriedLowLatencyData::Ptr{Cvoid} end -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +const VkAccelerationStructureKHR_T = Cvoid -const VkConditionalRenderingFlagsEXT = VkFlags +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} -struct VkConditionalRenderingBeginInfoEXT +struct VkPhysicalDeviceDescriptorBufferPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT + combinedImageSamplerDescriptorSingleArray::VkBool32 + bufferlessPushDescriptors::VkBool32 + allowSamplerImageViewPostSubmitCreation::VkBool32 + descriptorBufferOffsetAlignment::VkDeviceSize + maxDescriptorBufferBindings::UInt32 + maxResourceDescriptorBufferBindings::UInt32 + maxSamplerDescriptorBufferBindings::UInt32 + maxEmbeddedImmutableSamplerBindings::UInt32 + maxEmbeddedImmutableSamplers::UInt32 + bufferCaptureReplayDescriptorDataSize::Csize_t + imageCaptureReplayDescriptorDataSize::Csize_t + imageViewCaptureReplayDescriptorDataSize::Csize_t + samplerCaptureReplayDescriptorDataSize::Csize_t + accelerationStructureCaptureReplayDescriptorDataSize::Csize_t + samplerDescriptorSize::Csize_t + combinedImageSamplerDescriptorSize::Csize_t + sampledImageDescriptorSize::Csize_t + storageImageDescriptorSize::Csize_t + uniformTexelBufferDescriptorSize::Csize_t + robustUniformTexelBufferDescriptorSize::Csize_t + storageTexelBufferDescriptorSize::Csize_t + robustStorageTexelBufferDescriptorSize::Csize_t + uniformBufferDescriptorSize::Csize_t + robustUniformBufferDescriptorSize::Csize_t + storageBufferDescriptorSize::Csize_t + robustStorageBufferDescriptorSize::Csize_t + inputAttachmentDescriptorSize::Csize_t + accelerationStructureDescriptorSize::Csize_t + maxSamplerDescriptorBufferRange::VkDeviceSize + maxResourceDescriptorBufferRange::VkDeviceSize + samplerDescriptorBufferAddressSpaceSize::VkDeviceSize + resourceDescriptorBufferAddressSpaceSize::VkDeviceSize + descriptorBufferAddressSpaceSize::VkDeviceSize end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 + combinedImageSamplerDensityMapDescriptorSize::Csize_t end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkPhysicalDeviceDescriptorBufferFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - conditionalRenderingEnable::VkBool32 + descriptorBuffer::VkBool32 + descriptorBufferCaptureReplay::VkBool32 + descriptorBufferImageLayoutIgnored::VkBool32 + descriptorBufferPushDescriptors::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) +struct VkDescriptorAddressInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + range::VkDeviceSize + format::VkFormat end -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +struct VkDescriptorBufferBindingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + address::VkDeviceAddress + usage::VkBufferUsageFlags end -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -function vkCmdEndConditionalRenderingEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkDescriptorDataEXT + data::NTuple{8, UInt8} end -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat +function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) + f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) + f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) + f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) + f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) + return getfield(x, f) end -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} +function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) + r = Ref{VkDescriptorDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +function Base.propertynames(x::VkDescriptorDataEXT, private::Bool = false) + (:pSampler, :pCombinedImageSampler, :pInputAttachmentImage, :pSampledImage, :pStorageImage, :pUniformTexelBuffer, :pStorageTexelBuffer, :pUniformBuffer, :pStorageBuffer, :accelerationStructure, if private + fieldnames(typeof(x)) + else + () + end...) end -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) -const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} +const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} -function vkReleaseDisplayEXT(physicalDevice, display) - ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) + ref = Ref{VkDescriptorDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) + if val isa Ptr{VkSampler} + ptr.pSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pCombinedImageSampler = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pInputAttachmentImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pSampledImage = val + elseif val isa Ptr{VkDescriptorImageInfo} + ptr.pStorageImage = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageTexelBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pUniformBuffer = val + elseif val isa Ptr{VkDescriptorAddressInfoEXT} + ptr.pStorageBuffer = val + elseif val isa VkDeviceAddress + ptr.accelerationStructure = val + end + ref[] end -function vkReleaseDisplayEXT(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +struct VkDescriptorGetInfoEXT + data::NTuple{32, UInt8} end -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1 - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkDescriptorType}(x + 16) + f === :data && return Ptr{VkDescriptorDataEXT}(x + 24) + return getfield(x, f) 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 +function Base.getproperty(x::VkDescriptorGetInfoEXT, f::Symbol) + r = Ref{VkDescriptorGetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkDescriptorGetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +function Base.propertynames(x::VkDescriptorGetInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :data, if private + fieldnames(typeof(x)) + else + () + end...) 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 +function VkDescriptorGetInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkDescriptorType, data::VkDescriptorDataEXT) + ref = Ref{VkDescriptorGetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkDescriptorGetInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ref[] end -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkBufferCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer end -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkImageCaptureDescriptorDataInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage end -struct VkDisplayPowerInfoEXT +struct VkImageViewCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT + imageView::VkImageView end -struct VkDeviceEventInfoEXT +struct VkSamplerCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT + sampler::VkSampler end -struct VkDisplayEventInfoEXT +struct VkOpaqueCaptureDescriptorDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT + opaqueCaptureDescriptorData::Ptr{Cvoid} end -struct VkSwapchainCounterCreateInfoEXT +struct VkAccelerationStructureCaptureDescriptorDataInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT + accelerationStructure::VkAccelerationStructureKHR + accelerationStructureNV::VkAccelerationStructureNV end -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT +const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT +const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = 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 void ( VKAPI_PTR * PFN_vkGetDescriptorEXT +const PFN_vkGetDescriptorEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT +const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT +const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT +const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT +const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT +const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT +const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT +const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT +const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) + ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) + ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) end -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) 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) +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) + ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fptr) - ccall(fptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) + ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) end -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) + ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 +function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) end -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) + ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) end -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} +function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) 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 vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 +function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) 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 +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags +function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +end -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) + ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkPipelineViewportSwizzleStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} +function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) 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 +@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +const VkGraphicsPipelineLibraryFlagsEXT = VkFlags -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 + graphicsPipelineLibrary::VkBool32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} + graphicsPipelineLibraryFastLinking::VkBool32 + graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 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) +struct VkGraphicsPipelineLibraryCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkGraphicsPipelineLibraryFlagsEXT end -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEarlyAndLateFragmentTests::VkBool32 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 +@cenum VkFragmentShadingRateTypeNV::UInt32 begin + 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 end -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +@cenum VkFragmentShadingRateNV::UInt32 begin + 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 +end -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 + fragmentShadingRateEnums::VkBool32 + supersampleFragmentShadingRates::VkBool32 + noInvocationFragmentShadingRates::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat + maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits end -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 + shadingRateType::VkFragmentShadingRateTypeNV + shadingRate::VkFragmentShadingRateNV + combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV +const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} + +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) + ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkXYColorEXT - x::Cfloat - y::Cfloat +function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) end -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat +@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 end -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} +const VkAccelerationStructureMotionInfoFlagsNV = VkFlags -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) -end +const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} end -const VkDebugUtilsMessengerEXT_T = Cvoid - -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -@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 +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) 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_DEVICE_ADDRESS_BINDING_BIT_EXT = 8 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkDeviceOrHostAddressConstKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) end -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags +const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags +function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) + ref = Ref{VkDeviceOrHostAddressConstKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +struct VkAccelerationStructureGeometryMotionTrianglesDataNV + data::NTuple{24, UInt8} +end -struct VkDebugUtilsLabelEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + return getfield(x, f) end -struct VkDebugUtilsObjectNameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} +function Base.getproperty(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryMotionTrianglesDataNV, private::Bool = false) + (:sType, :pNext, :vertexData, if private + fieldnames(typeof(x)) + else + () + end...) +end -struct VkDebugUtilsMessengerCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} +function VkAccelerationStructureGeometryMotionTrianglesDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryMotionTrianglesDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryMotionTrianglesDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexData = vertexData + ref[] end -struct VkDebugUtilsObjectTagInfoEXT +struct VkAccelerationStructureMotionInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} + maxInstances::UInt32 + flags::VkAccelerationStructureMotionInfoFlagsNV 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} +struct VkAccelerationStructureMatrixMotionInstanceNV + data::NTuple{112, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureMatrixMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} +function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} +struct VkSRTDataNV + sx::Cfloat + a::Cfloat + b::Cfloat + pvx::Cfloat + sy::Cfloat + c::Cfloat + pvy::Cfloat + sz::Cfloat + pvz::Cfloat + qx::Cfloat + qy::Cfloat + qz::Cfloat + qw::Cfloat + tx::Cfloat + ty::Cfloat + tz::Cfloat +end -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} +struct VkAccelerationStructureSRTMotionInstanceNV + data::NTuple{144, UInt8} +end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) + f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) + f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) + f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) + f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) + f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) + f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) + return getfield(x, f) end -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +function Base.propertynames(x::VkAccelerationStructureSRTMotionInstanceNV, private::Bool = false) + (:transformT0, :transformT1, :instanceCustomIndex, :mask, :instanceShaderBindingTableRecordOffset, :flags, :accelerationStructureReference, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) + ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) + ptr.transformT0 = transformT0 + ptr.transformT1 = transformT1 + ptr.instanceCustomIndex = instanceCustomIndex + ptr.mask = mask + ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset + ptr.flags = flags + ptr.accelerationStructureReference = accelerationStructureReference + ref[] end -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +struct VkAccelerationStructureMotionInstanceDataNV + data::NTuple{144, UInt8} end -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) + f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) + f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) + f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) + return getfield(x, f) end -function vkQueueEndDebugUtilsLabelEXT(queue, fptr) - ccall(fptr, Cvoid, (VkQueue,), queue) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +function Base.propertynames(x::VkAccelerationStructureMotionInstanceDataNV, private::Bool = false) + (:staticInstance, :matrixMotionInstance, :srtMotionInstance, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end +const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) + if val isa VkAccelerationStructureInstanceKHR + ptr.staticInstance = val + elseif val isa VkAccelerationStructureMatrixMotionInstanceNV + ptr.matrixMotionInstance = val + elseif val isa VkAccelerationStructureSRTMotionInstanceNV + ptr.srtMotionInstance = val + end + ref[] end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +struct VkAccelerationStructureMotionInstanceNV + data::NTuple{152, UInt8} end -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol) + f === :type && return Ptr{VkAccelerationStructureMotionInstanceTypeNV}(x + 0) + f === :flags && return Ptr{VkAccelerationStructureMotionInstanceFlagsNV}(x + 4) + f === :data && return Ptr{VkAccelerationStructureMotionInstanceDataNV}(x + 8) + return getfield(x, f) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function Base.getproperty(x::VkAccelerationStructureMotionInstanceNV, f::Symbol) + r = Ref{VkAccelerationStructureMotionInstanceNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function Base.propertynames(x::VkAccelerationStructureMotionInstanceNV, private::Bool = false) + (:type, :flags, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +function VkAccelerationStructureMotionInstanceNV(type::VkAccelerationStructureMotionInstanceTypeNV, flags::VkAccelerationStructureMotionInstanceFlagsNV, data::VkAccelerationStructureMotionInstanceDataNV) + ref = Ref{VkAccelerationStructureMotionInstanceNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceNV}, ref) + ptr.type = type + ptr.flags = flags + ptr.data = data + ref[] end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingMotionBlur::VkBool32 + rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 end -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcr2plane444Formats::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 end -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fptr) - ccall(fptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -const VkSamplerReductionModeEXT = VkSamplerReductionMode - -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo - -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties - -const VkPhysicalDeviceInlineUniformBlockFeaturesEXT = VkPhysicalDeviceInlineUniformBlockFeatures +struct VkCopyCommandTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end -const VkPhysicalDeviceInlineUniformBlockPropertiesEXT = VkPhysicalDeviceInlineUniformBlockProperties +const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures -const VkWriteDescriptorSetInlineUniformBlockEXT = VkWriteDescriptorSetInlineUniformBlock +@cenum VkImageCompressionFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 + VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end -const VkDescriptorPoolInlineUniformBlockCreateInfoEXT = VkDescriptorPoolInlineUniformBlockCreateInfo +const VkImageCompressionFlagsEXT = VkFlags -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat +@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkSampleLocationsInfoEXT +const VkImageCompressionFixedRateFlagsEXT = VkFlags + +struct VkPhysicalDeviceImageCompressionControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} + imageCompressionControl::VkBool32 end -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkImageCompressionControlEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCompressionFlagsEXT + compressionControlPlaneCount::UInt32 + pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} end -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT +struct VkImageCompressionPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionFlags::VkImageCompressionFlagsEXT + imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT end -struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} + attachmentFeedbackLoopLayout::VkBool32 end -struct VkPipelineSampleLocationsStateCreateInfoEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceFaultFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 + deviceFault::VkBool32 + deviceFaultVendorBinary::VkBool32 end -struct VkMultisamplePropertiesEXT +struct VkDeviceFaultCountsEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D + addressInfoCount::UInt32 + vendorInfoCount::UInt32 + vendorBinarySize::VkDeviceSize 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} +struct VkDeviceFaultAddressInfoEXT + addressType::VkDeviceFaultAddressTypeEXT + reportedAddress::VkDeviceAddress + addressPrecision::VkDeviceSize +end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +struct VkDeviceFaultVendorInfoEXT + description::NTuple{256, Cchar} + vendorFaultCode::UInt64 + vendorFaultData::UInt64 end -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +struct VkDeviceFaultInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + description::NTuple{256, Cchar} + pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} + pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} + pVendorBinaryData::Ptr{Cvoid} end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT + headerSize::UInt32 + headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT + vendorID::UInt32 + deviceID::UInt32 + driverVersion::UInt32 + pipelineCacheUUID::NTuple{16, UInt8} + applicationNameOffset::UInt32 + applicationVersion::UInt32 + engineNameOffset::UInt32 + engineVersion::UInt32 + apiVersion::UInt32 end -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fptr) - ccall(fptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT +const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} + +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) + ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) 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 +function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT +struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 + rasterizationOrderColorAttachmentAccess::VkBool32 + rasterizationOrderDepthAttachmentAccess::VkBool32 + rasterizationOrderStencilAttachmentAccess::VkBool32 end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT +const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + +struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 + formatRgba10x6WithoutYCbCrSampler::VkBool32 end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT +struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT + mutableDescriptorType::VkBool32 end -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 +struct VkMutableDescriptorTypeListEXT + descriptorTypeCount::UInt32 + pDescriptorTypes::Ptr{VkDescriptorType} 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 +const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT + +struct VkMutableDescriptorTypeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + mutableDescriptorTypeListCount::UInt32 + pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} end -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT -struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} + vertexInputDynamicState::VkBool32 end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkVertexInputBindingDescription2EXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate + divisor::UInt32 end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV +struct VkVertexInputAttributeDescription2EXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 end -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT +const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} + +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) + ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkDrmFormatModifierPropertiesListEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +struct VkPhysicalDeviceDrmPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} + hasPrimary::VkBool32 + hasRender::VkBool32 + primaryMajor::Int64 + primaryMinor::Int64 + renderMajor::Int64 + renderMinor::Int64 end -struct VkImageDrmFormatModifierListCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} +@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} +@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkImageDrmFormatModifierPropertiesEXT +const VkDeviceAddressBindingFlagsEXT = VkFlags + +struct VkPhysicalDeviceAddressBindingReportFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 + reportAddressBinding::VkBool32 end -struct VkDrmFormatModifierProperties2EXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags2 +struct VkDeviceAddressBindingCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceAddressBindingFlagsEXT + baseAddress::VkDeviceAddress + size::VkDeviceSize + bindingType::VkDeviceAddressBindingTypeEXT end -struct VkDrmFormatModifierPropertiesList2EXT +struct VkPhysicalDeviceDepthClipControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierProperties2EXT} + depthClipControl::VkBool32 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) +struct VkPipelineViewportDepthClipControlCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + negativeOneToOne::VkBool32 end -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveTopologyListRestart::VkBool32 + primitiveTopologyPatchListRestart::VkBool32 end -const VkValidationCacheEXT_T = Cvoid - -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +struct VkSubpassShadingPipelineCreateInfoHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 end -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT +struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} + subpassShading::VkBool32 end -struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT + maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 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_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI +const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI +const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) + ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) + ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function vkCmdSubpassShadingHUAWEI(commandBuffer) + ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + invocationMask::VkBool32 end -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI +const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits - -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags - -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo - -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures +const VkRemoteAddressNV = Ptr{Cvoid} -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties +struct VkMemoryGetRemoteAddressInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo +struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryRDMA::VkBool32 +end -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV +const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} -@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 +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) + ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) 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 +function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) end -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} -end +const VkPipelineInfoEXT = VkPipelineInfoKHR -struct VkPipelineViewportShadingRateImageStateCreateInfoNV +struct VkPipelinePropertiesIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} + pipelineIdentifier::NTuple{16, UInt8} end -struct VkPhysicalDeviceShadingRateImageFeaturesNV +struct VkPhysicalDevicePipelinePropertiesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 + pipelinePropertiesIdentifier::VkBool32 end -struct VkPhysicalDeviceShadingRateImagePropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT +const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} + +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) + ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 +function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) end -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} +@cenum VkFrameBoundaryFlagBitsEXT::UInt32 begin + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 1 + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV +const VkFrameBoundaryFlagsEXT = VkFlags + +struct VkPhysicalDeviceFrameBoundaryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} + frameBoundary::VkBool32 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) +struct VkFrameBoundaryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFrameBoundaryFlagsEXT + frameID::UInt64 + imageCount::UInt32 + pImages::Ptr{VkImage} + bufferCount::UInt32 + pBuffers::Ptr{VkBuffer} + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multisampledRenderToSingleSampled::VkBool32 end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +struct VkSubpassResolvePerformanceQueryEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + optimal::VkBool32 end -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +struct VkMultisampledRenderToSingleSampledInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + multisampledRenderToSingleSampledEnable::VkBool32 + rasterizationSamples::VkSampleCountFlagBits end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState2::VkBool32 + extendedDynamicState2LogicOp::VkBool32 + extendedDynamicState2PatchControlPoints::VkBool32 end -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT +const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -const VkAccelerationStructureNV_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT +const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT +const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT +const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT +const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} -@cenum VkGeometryTypeKHR::UInt32 begin - 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 +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) + ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) end -const VkGeometryTypeNV = VkGeometryTypeKHR +function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +end -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - 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 +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) + ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) end -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +end -@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 +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) + ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) end -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +end -@cenum VkAccelerationStructureMemoryRequirementsTypeNV::UInt32 begin - 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 +function vkCmdSetLogicOpEXT(commandBuffer, logicOp) + ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -@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 +function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) end -const VkGeometryFlagsKHR = VkFlags +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) + ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -const VkGeometryFlagsNV = VkGeometryFlagsKHR +function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +end -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +struct VkPhysicalDeviceColorWriteEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + colorWriteEnable::VkBool32 +end -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 16 - VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 32 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - 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 +struct VkPipelineColorWriteCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pColorWriteEnables::Ptr{VkBool32} end -const VkGeometryInstanceFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT +const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) + ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +end -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +end -@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_MOTION_BIT_NV = 32 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 64 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 128 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 256 - 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 +struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitivesGeneratedQuery::VkBool32 + primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 + primitivesGeneratedQueryWithNonZeroStreams::VkBool32 end -const VkBuildAccelerationStructureFlagsKHR = VkFlags +const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeatures -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR +const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityProperties -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +struct VkPhysicalDeviceImageViewMinLodFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minLod::VkBool32 +end -struct VkRayTracingShaderGroupCreateInfoNV +struct VkImageViewMinLodCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 + minLod::Cfloat end -struct VkRayTracingPipelineCreateInfoNV +struct VkPhysicalDeviceMultiDrawFeaturesEXT 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 + multiDraw::VkBool32 end -struct VkGeometryTrianglesNV +struct VkPhysicalDeviceMultiDrawPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vertexData::VkBuffer - vertexOffset::VkDeviceSize + maxMultiDrawCount::UInt32 +end + +struct VkMultiDrawInfoEXT + firstVertex::UInt32 vertexCount::UInt32 - vertexStride::VkDeviceSize - vertexFormat::VkFormat - indexData::VkBuffer - indexOffset::VkDeviceSize +end + +struct VkMultiDrawIndexedInfoEXT + firstIndex::UInt32 indexCount::UInt32 - indexType::VkIndexType - transformData::VkBuffer - transformOffset::VkDeviceSize + vertexOffset::Int32 end -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT +const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT +const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} + +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) + ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV +function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) end -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) + ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) end -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} +function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) end -struct VkAccelerationStructureCreateInfoNV +struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV + image2DViewOf3D::VkBool32 + sampler2DViewOf3D::VkBool32 end -struct VkBindAccelerationStructureMemoryInfoNV +struct VkPhysicalDeviceShaderTileImageFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} + shaderTileImageColorReadAccess::VkBool32 + shaderTileImageDepthReadAccess::VkBool32 + shaderTileImageStencilReadAccess::VkBool32 end -struct VkWriteDescriptorSetAccelerationStructureNV +struct VkPhysicalDeviceShaderTileImagePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} + shaderTileImageCoherentReadAccelerated::VkBool32 + shaderTileImageReadSampleFromPixelRateInvocation::VkBool32 + shaderTileImageReadFromHelperInvocation::VkBool32 end -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV +const VkMicromapEXT_T = Cvoid + +const VkMicromapEXT = Ptr{VkMicromapEXT_T} + +@cenum VkMicromapTypeEXT::UInt32 begin + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 +@cenum VkBuildMicromapModeEXT::UInt32 begin + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} +@cenum VkCopyMicromapModeEXT::UInt32 begin + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 end -const VkTransformMatrixNV = VkTransformMatrixKHR +@cenum VkOpacityMicromapFormatEXT::UInt32 begin + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +end -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat +@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5 + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 end -const VkAabbPositionsNV = VkAabbPositionsKHR +@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +end -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + 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 end -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 48), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 48), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 52), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 52), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) +@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkBuildMicromapFlagsEXT = VkFlags + +@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkMicromapCreateFlagsEXT = VkFlags + +struct VkMicromapUsageEXT + count::UInt32 + subdivisionLevel::UInt32 + format::UInt32 +end + +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) return getfield(x, f) end -function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) - r = Ref{VkAccelerationStructureInstanceKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end + GC.@preserve r unsafe_load(fptr) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function VkAccelerationStructureInstanceKHR(transform::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureInstanceKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, ref) - ptr.transform = transform - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function Base.propertynames(x::VkDeviceOrHostAddressKHR, private::Bool = false) + (:deviceAddress, :hostAddress, if private + fieldnames(typeof(x)) + else + () + end...) 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} +const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} +function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) + ref = Ref{VkDeviceOrHostAddressKHR}() + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) + if val isa VkDeviceAddress + ptr.deviceAddress = val + elseif val isa Ptr{Cvoid} + ptr.hostAddress = val + end + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} +struct VkMicromapBuildInfoEXT + data::NTuple{96, UInt8} +end + +function Base.getproperty(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkMicromapTypeEXT}(x + 16) + f === :flags && return Ptr{VkBuildMicromapFlagsEXT}(x + 20) + f === :mode && return Ptr{VkBuildMicromapModeEXT}(x + 24) + f === :dstMicromap && return Ptr{VkMicromapEXT}(x + 32) + f === :usageCountsCount && return Ptr{UInt32}(x + 40) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + f === :triangleArray && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 80) + f === :triangleArrayStride && return Ptr{VkDeviceSize}(x + 88) + return getfield(x, f) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} +function Base.getproperty(x::VkMicromapBuildInfoEXT, f::Symbol) + r = Ref{VkMicromapBuildInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkMicromapBuildInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureNV dst , VkAccelerationStructureNV src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} +function Base.propertynames(x::VkMicromapBuildInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :dstMicromap, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :data, :scratchData, :triangleArray, :triangleArrayStride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# 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} +function VkMicromapBuildInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkMicromapTypeEXT, flags::VkBuildMicromapFlagsEXT, mode::VkBuildMicromapModeEXT, dstMicromap::VkMicromapEXT, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, data::VkDeviceOrHostAddressConstKHR, scratchData::VkDeviceOrHostAddressKHR, triangleArray::VkDeviceOrHostAddressConstKHR, triangleArrayStride::VkDeviceSize) + ref = Ref{VkMicromapBuildInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkMicromapBuildInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.dstMicromap = dstMicromap + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.data = data + ptr.scratchData = scratchData + ptr.triangleArray = triangleArray + ptr.triangleArrayStride = triangleArrayStride + ref[] +end -# 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} +struct VkMicromapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkMicromapCreateFlagsEXT + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkMicromapTypeEXT + deviceAddress::VkDeviceAddress +end -# 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} +struct VkPhysicalDeviceOpacityMicromapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromap::VkBool32 + micromapCaptureReplay::VkBool32 + micromapHostCommands::VkBool32 +end -# 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} +struct VkPhysicalDeviceOpacityMicromapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxOpacity2StateSubdivisionLevel::UInt32 + maxOpacity4StateSubdivisionLevel::UInt32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureNV accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} +struct VkMicromapVersionInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureNV * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} +struct VkCopyMicromapToMemoryInfoEXT + data::NTuple{40, UInt8} +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkMicromapEXT}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) +end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function Base.getproperty(x::VkCopyMicromapToMemoryInfoEXT, f::Symbol) + r = Ref{VkCopyMicromapToMemoryInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +function Base.setproperty!(x::Ptr{VkCopyMicromapToMemoryInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +function Base.propertynames(x::VkCopyMicromapToMemoryInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMicromapToMemoryInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkMicromapEXT, dst::VkDeviceOrHostAddressKHR, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMicromapToMemoryInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMicromapToMemoryInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +struct VkCopyMemoryToMicromapInfoEXT + data::NTuple{40, UInt8} end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +function Base.getproperty(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkMicromapEXT}(x + 24) + f === :mode && return Ptr{VkCopyMicromapModeEXT}(x + 32) + return getfield(x, f) end -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +function Base.getproperty(x::VkCopyMemoryToMicromapInfoEXT, f::Symbol) + r = Ref{VkCopyMemoryToMicromapInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +function Base.setproperty!(x::Ptr{VkCopyMemoryToMicromapInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) +function Base.propertynames(x::VkCopyMemoryToMicromapInfoEXT, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToMicromapInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkMicromapEXT, mode::VkCopyMicromapModeEXT) + ref = Ref{VkCopyMemoryToMicromapInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToMicromapInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] 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) +struct VkCopyMicromapInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkMicromapEXT + dst::VkMicromapEXT + mode::VkCopyMicromapModeEXT end -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +struct VkMicromapBuildSizesInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + micromapSize::VkDeviceSize + buildScratchSize::VkDeviceSize + discardable::VkBool32 end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +struct VkAccelerationStructureTrianglesOpacityMicromapEXT + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :indexType && return Ptr{VkIndexType}(x + 16) + f === :indexBuffer && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :indexStride && return Ptr{VkDeviceSize}(x + 32) + f === :baseTriangle && return Ptr{UInt32}(x + 40) + f === :usageCountsCount && return Ptr{UInt32}(x + 44) + f === :pUsageCounts && return Ptr{Ptr{VkMicromapUsageEXT}}(x + 48) + f === :ppUsageCounts && return Ptr{Ptr{Ptr{VkMicromapUsageEXT}}}(x + 56) + f === :micromap && return Ptr{VkMicromapEXT}(x + 64) + return getfield(x, f) end -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +function Base.getproperty(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, f::Symbol) + r = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) 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) +function Base.setproperty!(x::Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fptr) - ccall(fptr, 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) +function Base.propertynames(x::VkAccelerationStructureTrianglesOpacityMicromapEXT, private::Bool = false) + (:sType, :pNext, :indexType, :indexBuffer, :indexStride, :baseTriangle, :usageCountsCount, :pUsageCounts, :ppUsageCounts, :micromap, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureTrianglesOpacityMicromapEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, indexType::VkIndexType, indexBuffer::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, baseTriangle::UInt32, usageCountsCount::UInt32, pUsageCounts::Ptr{VkMicromapUsageEXT}, ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}}, micromap::VkMicromapEXT) + ref = Ref{VkAccelerationStructureTrianglesOpacityMicromapEXT}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureTrianglesOpacityMicromapEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.indexType = indexType + ptr.indexBuffer = indexBuffer + ptr.indexStride = indexStride + ptr.baseTriangle = baseTriangle + ptr.usageCountsCount = usageCountsCount + ptr.pUsageCounts = pUsageCounts + ptr.ppUsageCounts = ppUsageCounts + ptr.micromap = micromap + ref[] 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) +struct VkMicromapTriangleEXT + dataOffset::UInt32 + subdivisionLevel::UInt16 + format::UInt16 end -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT +const PFN_vkCreateMicromapEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT +const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT +const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT +const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT +const PFN_vkCopyMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT +const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT +const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT +const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT +const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT +const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT +const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT +const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT +const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT +const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} + +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) + ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) 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) +function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) end -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkDestroyMicromapEXT(device, micromap, pAllocator) + ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) 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) +function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) end -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) + ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) end -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) + ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) 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) +function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) end -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +function vkCopyMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) end -function vkCompileDeferredNV(device, pipeline, shader, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 +function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType +function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) end -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) + ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) end -const VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityKHR +function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +end -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR +function vkCmdCopyMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +end -struct VkImportMemoryHostPointerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} +function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) end -struct VkMemoryHostPointerPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize +function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) - ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) end -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} +function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) + ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) end -const VkPipelineCompilerControlFlagsAMD = VkFlags +function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +end -struct VkPipelineCompilerControlCreateInfoAMD +struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD + clustercullingShader::VkBool32 + multiviewClusterCullingShader::VkBool32 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 +struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI + sType::VkStructureType + pNext::Ptr{Cvoid} + maxWorkGroupCount::NTuple{3, UInt32} + maxWorkGroupSize::NTuple{3, UInt32} + maxOutputClusterCount::UInt32 + indirectBufferOffsetAlignment::VkDeviceSize end -struct VkCalibratedTimestampInfoEXT +struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT + clusterShadingRate::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI +const PFN_vkCmdDrawClusterHUAWEI = 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} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI +const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) 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) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) + ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 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 + borderColorSwizzle::VkBool32 + borderColorSwizzleFromImage::VkBool32 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkSamplerBorderColorComponentMappingCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD + components::VkComponentMapping + srgb::VkBool32 end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 + pageableDeviceLocalMemory::VkBool32 end -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 +# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT +const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} + +function vkSetDeviceMemoryPriorityEXT(device, memory, priority) + ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceShaderCorePropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 + pixelRate::UInt32 + texelRate::UInt32 + fmaRate::UInt32 end -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo +const VkPhysicalDeviceSchedulingControlsFlagsARM = VkFlags64 -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback +const VkPhysicalDeviceSchedulingControlsFlagBitsARM = VkFlags64 -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkDeviceQueueShaderCoreControlCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 + shaderCoreCount::UInt32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceSchedulingControlsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 + schedulingControls::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceSchedulingControlsPropertiesARM 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 + schedulingControlsFlags::VkPhysicalDeviceSchedulingControlsFlagsARM end -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 +struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageSlicedViewOf3D::VkBool32 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} +struct VkImageViewSlicedCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sliceOffset::UInt32 + sliceCount::UInt32 +end -# 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} +struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetHostMapping::VkBool32 +end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +struct VkDescriptorSetBindingReferenceVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetLayout::VkDescriptorSetLayout + binding::UInt32 end -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +struct VkDescriptorSetLayoutHostMappingInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorOffset::Csize_t + descriptorSize::UInt32 end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE +const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE +const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) + ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) end -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) 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) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) + ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) end -const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR +const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageFootprint::VkBool32 + nonSeamlessCubeMap::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkPhysicalDeviceRenderPassStripedFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} + renderPassStriped::VkBool32 end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkPhysicalDeviceRenderPassStripedPropertiesARM 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) + renderPassStripeGranularity::VkExtent2D + maxRenderPassStripes::UInt32 end -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +struct VkRenderPassStripeInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + stripeArea::VkRect2D end -struct VkQueueFamilyCheckpointPropertiesNV +struct VkRenderPassStripeBeginInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags + stripeInfoCount::UInt32 + pStripeInfos::Ptr{VkRenderPassStripeInfoARM} end -struct VkCheckpointDataNV +struct VkRenderPassStripeSubmitInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} + stripeSemaphoreInfoCount::UInt32 + pStripeSemaphoreInfos::Ptr{VkSemaphoreSubmitInfo} 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) +struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapOffset::VkBool32 end -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end +const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityOffsetGranularity::VkExtent2D end -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fptr) - ccall(fptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) -end +const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL +struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 + fragmentDensityOffsetCount::UInt32 + pFragmentDensityOffsets::Ptr{VkOffset2D} 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 +const VkSubpassFragmentDensityMapOffsetEndInfoQCOM = VkRenderPassFragmentDensityMapOffsetEndInfoEXT -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +struct VkCopyMemoryIndirectCommandNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + size::VkDeviceSize 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 +struct VkCopyMemoryToImageIndirectCommandNV + srcAddress::VkDeviceAddress + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D 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 +struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectCopy::VkBool32 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 +struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedQueues::VkQueueFlags end -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV +const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV +const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} + +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) + ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) 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) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) + ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) end -const __U_VkPerformanceValueDataINTEL = Union{UInt32, UInt64, Cfloat, VkBool32, Ptr{Cchar}} +const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 -function VkPerformanceValueDataINTEL(val::__U_VkPerformanceValueDataINTEL) - ref = Ref{VkPerformanceValueDataINTEL}() - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, ref) - if val isa UInt32 - ptr.value32 = val - elseif val isa UInt64 - ptr.value64 = val - elseif val isa Cfloat - ptr.valueFloat = val - elseif val isa VkBool32 - ptr.valueBool = val - elseif val isa Ptr{Cchar} - ptr.valueString = val - end - ref[] -end +const VkMemoryDecompressionMethodFlagsNV = VkFlags64 -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL +struct VkDecompressMemoryRegionNV + srcAddress::VkDeviceAddress + dstAddress::VkDeviceAddress + compressedSize::VkDeviceSize + decompressedSize::VkDeviceSize + decompressionMethod::VkMemoryDecompressionMethodFlagsNV end -struct VkInitializePerformanceApiInfoINTEL +struct VkPhysicalDeviceMemoryDecompressionFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} + memoryDecompression::VkBool32 end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL +struct VkPhysicalDeviceMemoryDecompressionPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL + decompressionMethods::VkMemoryDecompressionMethodFlagsNV + maxDecompressionIndirectCount::UInt64 end -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV +const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 +# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV +const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} + +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) + ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) end -struct VkPerformanceStreamMarkerInfoINTEL +function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +end + +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) + ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end + +function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - marker::UInt32 + deviceGeneratedCompute::VkBool32 + deviceGeneratedComputePipelines::VkBool32 + deviceGeneratedComputeCaptureReplay::VkBool32 end -struct VkPerformanceOverrideInfoINTEL +struct VkComputePipelineIndirectBufferInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 + deviceAddress::VkDeviceAddress + size::VkDeviceSize + pipelineDeviceAddressCaptureReplay::VkDeviceAddress end -struct VkPerformanceConfigurationAcquireInfoINTEL +struct VkPipelineIndirectDeviceAddressInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline 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} +struct VkBindPipelineIndirectCommandNV + pipelineAddress::VkDeviceAddress +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPipelineIndirectMemoryRequirementsNV +const PFN_vkGetPipelineIndirectMemoryRequirementsNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdatePipelineIndirectBufferNV +const PFN_vkCmdUpdatePipelineIndirectBufferNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetPipelineIndirectDeviceAddressNV +const PFN_vkGetPipelineIndirectDeviceAddressNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements) + ccall((:vkGetPipelineIndirectMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} +function vkGetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkComputePipelineCreateInfo}, Ptr{VkMemoryRequirements2}), device, pCreateInfo, pMemoryRequirements) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdUpdatePipelineIndirectBufferNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkCmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) end -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo) + ccall((:vkGetPipelineIndirectDeviceAddressNV, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +function vkGetPipelineIndirectDeviceAddressNV(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkPipelineIndirectDeviceAddressInfoNV}), device, pInfo) end -function vkUninitializePerformanceApiINTEL(device, fptr) - ccall(fptr, Cvoid, (VkDevice,), device) +@cenum VkRayTracingLssIndexingModeNV::UInt32 begin + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0 + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1 + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +@cenum VkRayTracingLssPrimitiveEndCapsModeNV::UInt32 begin + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1 + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 2147483647 end -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + spheres::VkBool32 + linearSweptSpheres::VkBool32 end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV + data::NTuple{96, UInt8} end -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + f === :indexingMode && return Ptr{VkRayTracingLssIndexingModeNV}(x + 88) + f === :endCapsMode && return Ptr{VkRayTracingLssPrimitiveEndCapsModeNV}(x + 92) + return getfield(x, f) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function Base.getproperty(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fptr) - ccall(fptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +function Base.propertynames(x::VkAccelerationStructureGeometryLinearSweptSpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, :indexingMode, :endCapsMode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryLinearSweptSpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize, indexingMode::VkRayTracingLssIndexingModeNV, endCapsMode::VkRayTracingLssPrimitiveEndCapsModeNV) + ref = Ref{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryLinearSweptSpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ptr.indexingMode = indexingMode + ptr.endCapsMode = endCapsMode + ref[] end -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +struct VkAccelerationStructureGeometrySpheresDataNV + data::NTuple{88, UInt8} end -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :radiusFormat && return Ptr{VkFormat}(x + 40) + f === :radiusData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :radiusStride && return Ptr{VkDeviceSize}(x + 56) + f === :indexType && return Ptr{VkIndexType}(x + 64) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 72) + f === :indexStride && return Ptr{VkDeviceSize}(x + 80) + return getfield(x, f) end -function vkReleasePerformanceConfigurationINTEL(device, configuration, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +function Base.getproperty(x::VkAccelerationStructureGeometrySpheresDataNV, f::Symbol) + r = Ref{VkAccelerationStructureGeometrySpheresDataNV}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometrySpheresDataNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fptr) - ccall(fptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +function Base.propertynames(x::VkAccelerationStructureGeometrySpheresDataNV, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :radiusFormat, :radiusData, :radiusStride, :indexType, :indexData, :indexStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometrySpheresDataNV(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, radiusFormat::VkFormat, radiusData::VkDeviceOrHostAddressConstKHR, radiusStride::VkDeviceSize, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, indexStride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometrySpheresDataNV}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometrySpheresDataNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.radiusFormat = radiusFormat + ptr.radiusData = radiusData + ptr.radiusStride = radiusStride + ptr.indexType = indexType + ptr.indexData = indexData + ptr.indexStride = indexStride + ref[] end -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + linearColorAttachment::VkBool32 end -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fptr) - ccall(fptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageCompressionControlSwapchain::VkBool32 end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkImageViewSampleWeightCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 + filterCenter::VkOffset2D + filterSize::VkExtent2D + numPhases::UInt32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkPhysicalDeviceImageProcessingFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 + textureSampleWeighted::VkBool32 + textureBoxFilter::VkBool32 + textureBlockMatch::VkBool32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkPhysicalDeviceImageProcessingPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 + maxWeightFilterPhases::UInt32 + maxWeightFilterDimension::VkExtent2D + maxBlockMatchRegion::VkExtent2D + maxBoxFilterBlockSize::VkExtent2D end -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + nestedCommandBuffer::VkBool32 + nestedCommandBufferRendering::VkBool32 + nestedCommandBufferSimultaneousUse::VkBool32 +end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCommandBufferNestingLevel::UInt32 end -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fptr) - ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +struct VkExternalMemoryAcquireUnmodifiedEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireUnmodifiedMemory::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 + extendedDynamicState3TessellationDomainOrigin::VkBool32 + extendedDynamicState3DepthClampEnable::VkBool32 + extendedDynamicState3PolygonMode::VkBool32 + extendedDynamicState3RasterizationSamples::VkBool32 + extendedDynamicState3SampleMask::VkBool32 + extendedDynamicState3AlphaToCoverageEnable::VkBool32 + extendedDynamicState3AlphaToOneEnable::VkBool32 + extendedDynamicState3LogicOpEnable::VkBool32 + extendedDynamicState3ColorBlendEnable::VkBool32 + extendedDynamicState3ColorBlendEquation::VkBool32 + extendedDynamicState3ColorWriteMask::VkBool32 + extendedDynamicState3RasterizationStream::VkBool32 + extendedDynamicState3ConservativeRasterizationMode::VkBool32 + extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 + extendedDynamicState3DepthClipEnable::VkBool32 + extendedDynamicState3SampleLocationsEnable::VkBool32 + extendedDynamicState3ColorBlendAdvanced::VkBool32 + extendedDynamicState3ProvokingVertexMode::VkBool32 + extendedDynamicState3LineRasterizationMode::VkBool32 + extendedDynamicState3LineStippleEnable::VkBool32 + extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 + extendedDynamicState3ViewportWScalingEnable::VkBool32 + extendedDynamicState3ViewportSwizzle::VkBool32 + extendedDynamicState3CoverageToColorEnable::VkBool32 + extendedDynamicState3CoverageToColorLocation::VkBool32 + extendedDynamicState3CoverageModulationMode::VkBool32 + extendedDynamicState3CoverageModulationTableEnable::VkBool32 + extendedDynamicState3CoverageModulationTable::VkBool32 + extendedDynamicState3CoverageReductionMode::VkBool32 + extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 + extendedDynamicState3ShadingRateImageEnable::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 + dynamicPrimitiveTopologyUnrestricted::VkBool32 +end + +struct VkColorBlendEquationEXT + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp end -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference +struct VkColorBlendAdvancedEXT + advancedBlendOp::VkBlendOp + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT + clampResults::VkBool32 end -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures - -const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = VkPhysicalDeviceSubgroupSizeControlFeatures +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT +const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} -const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = VkPhysicalDeviceSubgroupSizeControlProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT +const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} -const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT +const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT +const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} -const VkShaderCorePropertiesFlagsAMD = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT +const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT +const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT +const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT +const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT +const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT +const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT +const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT +const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT +const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT +const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT +const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT +const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT +const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT +const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} -function vkGetBufferDeviceAddressEXT(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT +const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} -const VkToolPurposeFlagBitsEXT = VkToolPurposeFlagBits +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT +const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} -const VkToolPurposeFlagsEXT = VkToolPurposeFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT +const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} -const VkPhysicalDeviceToolPropertiesEXT = VkPhysicalDeviceToolProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV +const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolProperties * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV +const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV +const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolProperties}), physicalDevice, pToolCount, pToolProperties) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV +const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV +const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV +const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} -@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_SHADER_VALIDATION_CACHE_EXT = 7 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV +const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} -struct VkValidationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV +const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV +const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} -@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 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV +const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} -struct VkCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) + ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 +function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) + ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) 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) +function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) end -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) + ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) 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 +function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) end -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags - -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) + ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkPipelineCoverageReductionStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV +function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) end -struct VkFramebufferMixedSamplesCombinationNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) + ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) 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) +function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) end -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) + ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 +function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) + ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -@cenum VkProvokingVertexModeEXT::UInt32 begin - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0 - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1 - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647 +function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) end -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) + ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 +function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) end -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) + ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT +function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) + ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) end -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) + ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) 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 +function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) + ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 +function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) end -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) + ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) + ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) end -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) 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 +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) + ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) end -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures +function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) + ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) end -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fptr) - ccall(fptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) + ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 +function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) + ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} +function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) + ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} +function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) + ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} +function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +end -# 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} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) + ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} +function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) + ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} +function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) + ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} +function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) + ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +end -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) end -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) + ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) end -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) + ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) end -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) + ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) end -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) + ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) end -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) + ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) 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) +function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) end -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) + ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) end -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) + ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) end -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +@cenum VkSubpassMergeStatusEXT::UInt32 begin + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassMergeFeedback::VkBool32 end -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +struct VkRenderPassCreationControlEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disallowMerging::VkBool32 end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +struct VkRenderPassCreationFeedbackInfoEXT + postMergeSubpassCount::UInt32 end -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +struct VkRenderPassCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkRenderPassSubpassFeedbackInfoEXT + subpassMergeStatus::VkSubpassMergeStatusEXT + description::NTuple{256, Cchar} + postMergeIndex::UInt32 end -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +struct VkRenderPassSubpassFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} 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) +@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 end -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) -end +const VkDirectDriverLoadingFlagsLUNARG = VkFlags -struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG +const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} + +struct VkDirectDriverLoadingInfoLUNARG sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferFloat16Atomics::VkBool32 - shaderBufferFloat16AtomicAdd::VkBool32 - shaderBufferFloat16AtomicMinMax::VkBool32 - shaderBufferFloat32AtomicMinMax::VkBool32 - shaderBufferFloat64AtomicMinMax::VkBool32 - shaderSharedFloat16Atomics::VkBool32 - shaderSharedFloat16AtomicAdd::VkBool32 - shaderSharedFloat16AtomicMinMax::VkBool32 - shaderSharedFloat32AtomicMinMax::VkBool32 - shaderSharedFloat64AtomicMinMax::VkBool32 - shaderImageFloat32AtomicMinMax::VkBool32 - sparseImageFloat32AtomicMinMax::VkBool32 + flags::VkDirectDriverLoadingFlagsLUNARG + pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG end -@cenum VkPresentScalingFlagBitsEXT::UInt32 begin - VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 1 - VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 2 - VK_PRESENT_SCALING_STRETCH_BIT_EXT = 4 - VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDirectDriverLoadingListLUNARG + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDirectDriverLoadingModeLUNARG + driverCount::UInt32 + pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} end -const VkPresentScalingFlagsEXT = VkFlags +const VkTensorARM_T = Cvoid -@cenum VkPresentGravityFlagBitsEXT::UInt32 begin - VK_PRESENT_GRAVITY_MIN_BIT_EXT = 1 - VK_PRESENT_GRAVITY_MAX_BIT_EXT = 2 - VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 4 - VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +const VkTensorARM = Ptr{VkTensorARM_T} + +const VkTensorViewARM_T = Cvoid + +const VkTensorViewARM = Ptr{VkTensorViewARM_T} + +@cenum VkTensorTilingARM::UInt32 begin + VK_TENSOR_TILING_OPTIMAL_ARM = 0 + VK_TENSOR_TILING_LINEAR_ARM = 1 + VK_TENSOR_TILING_MAX_ENUM_ARM = 2147483647 end -const VkPresentGravityFlagsEXT = VkFlags +const VkTensorCreateFlagsARM = VkFlags64 + +const VkTensorCreateFlagBitsARM = VkFlags64 + +const VkTensorViewCreateFlagsARM = VkFlags64 + +const VkTensorViewCreateFlagBitsARM = VkFlags64 -struct VkSurfacePresentModeEXT +const VkTensorUsageFlagsARM = VkFlags64 + +const VkTensorUsageFlagBitsARM = VkFlags64 + +struct VkTensorDescriptionARM sType::VkStructureType pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR + tiling::VkTensorTilingARM + format::VkFormat + dimensionCount::UInt32 + pDimensions::Ptr{Int64} + pStrides::Ptr{Int64} + usage::VkTensorUsageFlagsARM end -struct VkSurfacePresentScalingCapabilitiesEXT +struct VkTensorCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkSurfacePresentModeCompatibilityEXT +struct VkTensorViewCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + flags::VkTensorViewCreateFlagsARM + tensor::VkTensorARM + format::VkFormat end -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +struct VkTensorMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 + tensor::VkTensorARM end -struct VkSwapchainPresentFenceInfoEXT +struct VkBindTensorMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} + tensor::VkTensorARM + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -struct VkSwapchainPresentModesCreateInfoEXT +struct VkWriteDescriptorSetTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + tensorViewCount::UInt32 + pTensorViews::Ptr{VkTensorViewARM} end -struct VkSwapchainPresentModeInfoEXT +struct VkTensorFormatPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} + optimalTilingTensorFeatures::VkFormatFeatureFlags2 + linearTilingTensorFeatures::VkFormatFeatureFlags2 end -struct VkSwapchainPresentScalingCreateInfoEXT +struct VkPhysicalDeviceTensorPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT + maxTensorDimensionCount::UInt32 + maxTensorElements::UInt64 + maxPerDimensionTensorElements::UInt64 + maxTensorStride::Int64 + maxTensorSize::UInt64 + maxTensorShaderAccessArrayLength::UInt32 + maxTensorShaderAccessSize::UInt32 + maxDescriptorSetStorageTensors::UInt32 + maxPerStageDescriptorSetStorageTensors::UInt32 + maxDescriptorSetUpdateAfterBindStorageTensors::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageTensors::UInt32 + shaderStorageTensorArrayNonUniformIndexingNative::VkBool32 + shaderTensorSupportedStages::VkShaderStageFlags end -struct VkReleaseSwapchainImagesInfoEXT +struct VkTensorMemoryBarrierARM sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndexCount::UInt32 - pImageIndices::Ptr{UInt32} -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseSwapchainImagesEXT ) ( VkDevice device , const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) -const PFN_vkReleaseSwapchainImagesEXT = Ptr{Cvoid} - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo) - ccall((:vkReleaseSwapchainImagesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end - -function vkReleaseSwapchainImagesEXT(device, pReleaseInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkReleaseSwapchainImagesInfoEXT}), device, pReleaseInfo) -end - -const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures - -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_DRAW_MESH_TASKS_NV = 1000328000 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 + srcStageMask::VkPipelineStageFlags2 + srcAccessMask::VkAccessFlags2 + dstStageMask::VkPipelineStageFlags2 + dstAccessMask::VkAccessFlags2 + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + tensor::VkTensorARM end -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +struct VkTensorDependencyInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorMemoryBarrierCount::UInt32 + pTensorMemoryBarriers::Ptr{VkTensorMemoryBarrierARM} 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 +struct VkPhysicalDeviceTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorNonPacked::VkBool32 + shaderTensorAccess::VkBool32 + shaderStorageTensorArrayDynamicIndexing::VkBool32 + shaderStorageTensorArrayNonUniformIndexing::VkBool32 + descriptorBindingStorageTensorUpdateAfterBind::VkBool32 + tensors::VkBool32 end -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags - -struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV +struct VkDeviceTensorMemoryRequirementsARM sType::VkStructureType pNext::Ptr{Cvoid} - maxGraphicsShaderGroupCount::UInt32 - maxIndirectSequenceCount::UInt32 - maxIndirectCommandsTokenCount::UInt32 - maxIndirectCommandsStreamCount::UInt32 - maxIndirectCommandsTokenOffset::UInt32 - maxIndirectCommandsStreamStride::UInt32 - minSequencesCountBufferOffsetAlignment::UInt32 - minSequencesIndexBufferOffsetAlignment::UInt32 - minIndirectCommandsBufferOffsetAlignment::UInt32 + pCreateInfo::Ptr{VkTensorCreateInfoARM} end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV +struct VkTensorCopyARM sType::VkStructureType pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 + dimensionCount::UInt32 + pSrcOffset::Ptr{UInt64} + pDstOffset::Ptr{UInt64} + pExtent::Ptr{UInt64} end -struct VkGraphicsShaderGroupCreateInfoNV +struct VkCopyTensorInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + srcTensor::VkTensorARM + dstTensor::VkTensorARM + regionCount::UInt32 + pRegions::Ptr{VkTensorCopyARM} end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV +struct VkMemoryDedicatedAllocateInfoTensorARM sType::VkStructureType pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} + tensor::VkTensorARM end -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 +struct VkPhysicalDeviceExternalTensorInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkTensorCreateFlagsARM + pDescription::Ptr{VkTensorDescriptionARM} + handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType +struct VkExternalTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties end -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 +struct VkExternalMemoryTensorCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 +struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorBufferTensorDescriptors::VkBool32 end -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize +struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + tensorCaptureReplayDescriptorDataSize::Csize_t + tensorViewCaptureReplayDescriptorDataSize::Csize_t + tensorDescriptorSize::Csize_t end -struct VkIndirectCommandsLayoutTokenNV +struct VkDescriptorGetTensorInfoARM 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} + tensorView::VkTensorViewARM end -struct VkIndirectCommandsLayoutCreateInfoNV +struct VkTensorCaptureDescriptorDataInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} + tensor::VkTensorARM end -struct VkGeneratedCommandsInfoNV +struct VkTensorViewCaptureDescriptorDataInfoARM 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 + tensorView::VkTensorViewARM end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkFrameBoundaryTensorsARM sType::VkStructureType pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 + tensorCount::UInt32 + pTensors::Ptr{VkTensorARM} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorARM +const PFN_vkCreateTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorARM +const PFN_vkDestroyTensorARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateTensorViewARM +const PFN_vkCreateTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyTensorViewARM +const PFN_vkDestroyTensorViewARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetTensorMemoryRequirementsARM +const PFN_vkGetTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindTensorMemoryARM +const PFN_vkBindTensorMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceTensorMemoryRequirementsARM +const PFN_vkGetDeviceTensorMemoryRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyTensorARM +const PFN_vkCmdCopyTensorARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM +const PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorOpaqueCaptureDescriptorDataARM +const PFN_vkGetTensorOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM +const PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM = Ptr{Cvoid} + +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor) + ccall((:vkCreateTensorARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) end -# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} +function vkCreateTensorARM(device, pCreateInfo, pAllocator, pTensor, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorARM}), device, pCreateInfo, pAllocator, pTensor) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) -const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} +function vkDestroyTensorARM(device, tensor, pAllocator) + ccall((:vkDestroyTensorARM, libvulkan), Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) -const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} +function vkDestroyTensorARM(device, tensor, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorARM, Ptr{VkAllocationCallbacks}), device, tensor, pAllocator) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) -const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateTensorViewARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) -const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} +function vkCreateTensorViewARM(device, pCreateInfo, pAllocator, pView, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkTensorViewARM}), device, pCreateInfo, pAllocator, pView) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +function vkDestroyTensorViewARM(device, tensorView, pAllocator) + ccall((:vkDestroyTensorViewARM, libvulkan), Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) +end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkDestroyTensorViewARM(device, tensorView, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkTensorViewARM, Ptr{VkAllocationCallbacks}), device, tensorView, pAllocator) end -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function vkGetTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkTensorMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindTensorMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function vkBindTensorMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindTensorMemoryInfoARM}), device, bindInfoCount, pBindInfos) end -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDeviceTensorMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkGetDeviceTensorMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDeviceTensorMemoryRequirementsARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo) + ccall((:vkCmdCopyTensorARM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyTensorInfoARM}), commandBuffer, pCopyTensorInfo) end -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties) + ccall((:vkGetPhysicalDeviceExternalTensorPropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkGetPhysicalDeviceExternalTensorPropertiesARM(physicalDevice, pExternalTensorInfo, pExternalTensorProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalTensorInfoARM}, Ptr{VkExternalTensorPropertiesARM}), physicalDevice, pExternalTensorInfo, pExternalTensorProperties) end -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 +function vkGetTensorOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) end -struct VkCommandBufferInheritanceViewportScissorInfoNV +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData) + ccall((:vkGetTensorViewOpaqueCaptureDescriptorDataARM, libvulkan), VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +function vkGetTensorViewOpaqueCaptureDescriptorDataARM(device, pInfo, pData, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkTensorViewCaptureDescriptorDataInfoARM}, Ptr{Cvoid}), device, pInfo, pData) +end + +struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} + shaderModuleIdentifier::VkBool32 end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 + shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} end -const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = VkPhysicalDeviceTexelBufferAlignmentProperties - -struct VkRenderPassTransformBeginInfoQCOM +struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +struct VkShaderModuleIdentifierEXT sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D + identifierSize::UInt32 + identifier::NTuple{32, UInt8} end -@cenum VkDeviceMemoryReportEventTypeEXT::UInt32 begin - 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 -end +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT +const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} -const VkDeviceMemoryReportFlagsEXT = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT +const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) + ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -struct VkDeviceMemoryReportCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 +function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) end -# typedef void ( VKAPI_PTR * PFN_vkDeviceMemoryReportCallbackEXT ) ( const VkDeviceMemoryReportCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) + ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) +end -struct VkDeviceDeviceMemoryReportCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} +function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) end -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , VkDisplayKHR display ) -const PFN_vkAcquireDrmDisplayEXT = Ptr{Cvoid} +const VkOpticalFlowSessionNV_T = Cvoid -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDrmDisplayEXT ) ( VkPhysicalDevice physicalDevice , int32_t drmFd , uint32_t connectorId , VkDisplayKHR * display ) -const PFN_vkGetDrmDisplayEXT = Ptr{Cvoid} +const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display) - ccall((:vkAcquireDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 end -function vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, VkDisplayKHR), physicalDevice, drmFd, display) +@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display) - ccall((:vkGetDrmDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Int32, UInt32, Ptr{VkDisplayKHR}), physicalDevice, drmFd, connectorId, display) +const VkOpticalFlowGridSizeFlagsNV = VkFlags + +@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceRobustness2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 +const VkOpticalFlowUsageFlagsNV = VkFlags + +@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkOpticalFlowSessionCreateFlagsNV = VkFlags + +@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +const VkOpticalFlowExecuteFlagsNV = VkFlags + +struct VkPhysicalDeviceOpticalFlowFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize + opticalFlow::VkBool32 end -struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkPhysicalDeviceOpticalFlowPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat + supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV + supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV + hintSupported::VkBool32 + costSupported::VkBool32 + bidirectionalFlowSupported::VkBool32 + globalFlowSupported::VkBool32 + minWidth::UInt32 + minHeight::UInt32 + maxWidth::UInt32 + maxHeight::UInt32 + maxNumRegionsOfInterest::UInt32 end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +struct VkOpticalFlowImageFormatInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 + usage::VkOpticalFlowUsageFlagsNV end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkOpticalFlowImageFormatPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 + format::VkFormat end -struct VkPhysicalDevicePresentBarrierFeaturesNV +struct VkOpticalFlowSessionCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrier::VkBool32 + width::UInt32 + height::UInt32 + imageFormat::VkFormat + flowVectorFormat::VkFormat + costFormat::VkFormat + outputGridSize::VkOpticalFlowGridSizeFlagsNV + hintGridSize::VkOpticalFlowGridSizeFlagsNV + performanceLevel::VkOpticalFlowPerformanceLevelNV + flags::VkOpticalFlowSessionCreateFlagsNV end -struct VkSurfaceCapabilitiesPresentBarrierNV +struct VkOpticalFlowSessionCreatePrivateDataInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierSupported::VkBool32 + id::UInt32 + size::UInt32 + pPrivateData::Ptr{Cvoid} end -struct VkSwapchainPresentBarrierCreateInfoNV +struct VkOpticalFlowExecuteInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - presentBarrierEnable::VkBool32 + flags::VkOpticalFlowExecuteFlagsNV + regionCount::UInt32 + pRegions::Ptr{VkRect2D} end -const VkPrivateDataSlotEXT = VkPrivateDataSlot - -const VkPrivateDataSlotCreateFlagsEXT = VkPrivateDataSlotCreateFlags - -const VkPhysicalDevicePrivateDataFeaturesEXT = VkPhysicalDevicePrivateDataFeatures +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV +const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} -const VkDevicePrivateDataCreateInfoEXT = VkDevicePrivateDataCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV +const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} -const VkPrivateDataSlotCreateInfoEXT = VkPrivateDataSlotCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV +const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlot * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV +const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlot privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV +const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlot privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +end + +function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) end -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlot}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) + ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) end -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkPrivateDataSlot, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) + ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) + ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) end -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fptr) - ccall(fptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, UInt64), device, objectType, objectHandle, privateDataSlot, data) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) + ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) end -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlot, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +struct VkPhysicalDeviceLegacyDitheringFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + legacyDithering::VkBool32 end -const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = VkPhysicalDevicePipelineCreationCacheControlFeatures +const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT = VkPhysicalDevicePipelineProtectedAccessFeatures -@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_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 8 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +@cenum VkAntiLagModeAMD::UInt32 begin + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0 + VK_ANTI_LAG_MODE_ON_AMD = 1 + VK_ANTI_LAG_MODE_OFF_AMD = 2 + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 2147483647 end -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +@cenum VkAntiLagStageAMD::UInt32 begin + VK_ANTI_LAG_STAGE_INPUT_AMD = 0 + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1 + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 2147483647 +end -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV +struct VkPhysicalDeviceAntiLagFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 + antiLag::VkBool32 end -struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkAntiLagPresentationInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV + stage::VkAntiLagStageAMD + frameIndex::UInt64 end -const VkAccelerationStructureKHR_T = Cvoid - -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -struct VkPhysicalDeviceDescriptorBufferPropertiesEXT +struct VkAntiLagDataAMD sType::VkStructureType pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorSingleArray::VkBool32 - bufferlessPushDescriptors::VkBool32 - allowSamplerImageViewPostSubmitCreation::VkBool32 - descriptorBufferOffsetAlignment::VkDeviceSize - maxDescriptorBufferBindings::UInt32 - maxResourceDescriptorBufferBindings::UInt32 - maxSamplerDescriptorBufferBindings::UInt32 - maxEmbeddedImmutableSamplerBindings::UInt32 - maxEmbeddedImmutableSamplers::UInt32 - bufferCaptureReplayDescriptorDataSize::Csize_t - imageCaptureReplayDescriptorDataSize::Csize_t - imageViewCaptureReplayDescriptorDataSize::Csize_t - samplerCaptureReplayDescriptorDataSize::Csize_t - accelerationStructureCaptureReplayDescriptorDataSize::Csize_t - samplerDescriptorSize::Csize_t - combinedImageSamplerDescriptorSize::Csize_t - sampledImageDescriptorSize::Csize_t - storageImageDescriptorSize::Csize_t - uniformTexelBufferDescriptorSize::Csize_t - robustUniformTexelBufferDescriptorSize::Csize_t - storageTexelBufferDescriptorSize::Csize_t - robustStorageTexelBufferDescriptorSize::Csize_t - uniformBufferDescriptorSize::Csize_t - robustUniformBufferDescriptorSize::Csize_t - storageBufferDescriptorSize::Csize_t - robustStorageBufferDescriptorSize::Csize_t - inputAttachmentDescriptorSize::Csize_t - accelerationStructureDescriptorSize::Csize_t - maxSamplerDescriptorBufferRange::VkDeviceSize - maxResourceDescriptorBufferRange::VkDeviceSize - samplerDescriptorBufferAddressSpaceSize::VkDeviceSize - resourceDescriptorBufferAddressSpaceSize::VkDeviceSize - descriptorBufferAddressSpaceSize::VkDeviceSize + mode::VkAntiLagModeAMD + maxFPS::UInt32 + pPresentationInfo::Ptr{VkAntiLagPresentationInfoAMD} end -struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDensityMapDescriptorSize::Csize_t +# typedef void ( VKAPI_PTR * PFN_vkAntiLagUpdateAMD +const PFN_vkAntiLagUpdateAMD = Ptr{Cvoid} + +function vkAntiLagUpdateAMD(device, pData) + ccall((:vkAntiLagUpdateAMD, libvulkan), Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkPhysicalDeviceDescriptorBufferFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorBuffer::VkBool32 - descriptorBufferCaptureReplay::VkBool32 - descriptorBufferImageLayoutIgnored::VkBool32 - descriptorBufferPushDescriptors::VkBool32 +function vkAntiLagUpdateAMD(device, pData, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAntiLagDataAMD}), device, pData) end -struct VkDescriptorAddressInfoEXT +const VkShaderEXT_T = Cvoid + +const VkShaderEXT = Ptr{VkShaderEXT_T} + +@cenum VkShaderCodeTypeEXT::UInt32 begin + VK_SHADER_CODE_TYPE_BINARY_EXT = 0 + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1 + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDepthClampModeEXT::UInt32 begin + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0 + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1 + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkShaderCreateFlagBitsEXT::UInt32 begin + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 1 + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 2 + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 4 + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 8 + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 16 + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 32 + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 64 + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 128 + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkShaderCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceShaderObjectFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - range::VkDeviceSize - format::VkFormat + shaderObject::VkBool32 end -struct VkDescriptorBufferBindingInfoEXT +struct VkPhysicalDeviceShaderObjectPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - address::VkDeviceAddress - usage::VkBufferUsageFlags + shaderBinaryUUID::NTuple{16, UInt8} + shaderBinaryVersion::UInt32 end -struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT +struct VkShaderCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + flags::VkShaderCreateFlagsEXT + stage::VkShaderStageFlagBits + nextStage::VkShaderStageFlags + codeType::VkShaderCodeTypeEXT + codeSize::Csize_t + pCode::Ptr{Cvoid} + pName::Ptr{Cchar} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} + pSpecializationInfo::Ptr{VkSpecializationInfo} end -struct VkDescriptorDataEXT - data::NTuple{8, UInt8} +const VkShaderRequiredSubgroupSizeCreateInfoEXT = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo + +struct VkDepthClampRangeEXT + minDepthClamp::Cfloat + maxDepthClamp::Cfloat end -function Base.getproperty(x::Ptr{VkDescriptorDataEXT}, f::Symbol) - f === :pSampler && return Ptr{Ptr{VkSampler}}(x + 0) - f === :pCombinedImageSampler && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pInputAttachmentImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pSampledImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pStorageImage && return Ptr{Ptr{VkDescriptorImageInfo}}(x + 0) - f === :pUniformTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageTexelBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pUniformBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :pStorageBuffer && return Ptr{Ptr{VkDescriptorAddressInfoEXT}}(x + 0) - f === :accelerationStructure && return Ptr{VkDeviceAddress}(x + 0) - return getfield(x, f) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShadersEXT +const PFN_vkCreateShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderEXT +const PFN_vkDestroyShaderEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderBinaryDataEXT +const PFN_vkGetShaderBinaryDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadersEXT +const PFN_vkCmdBindShadersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampRangeEXT +const PFN_vkCmdSetDepthClampRangeEXT = Ptr{Cvoid} + +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders) + ccall((:vkCreateShadersEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -function Base.getproperty(x::VkDescriptorDataEXT, f::Symbol) - r = Ref{VkDescriptorDataEXT}(x) - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkCreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkShaderCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderEXT}), device, createInfoCount, pCreateInfos, pAllocator, pShaders) end -function Base.setproperty!(x::Ptr{VkDescriptorDataEXT}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkDestroyShaderEXT(device, shader, pAllocator) + ccall((:vkDestroyShaderEXT, libvulkan), Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) end -const __U_VkDescriptorDataEXT = Union{Ptr{VkSampler}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorImageInfo}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, Ptr{VkDescriptorAddressInfoEXT}, VkDeviceAddress} +function vkDestroyShaderEXT(device, shader, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkShaderEXT, Ptr{VkAllocationCallbacks}), device, shader, pAllocator) +end -function VkDescriptorDataEXT(val::__U_VkDescriptorDataEXT) - ref = Ref{VkDescriptorDataEXT}() - ptr = Base.unsafe_convert(Ptr{VkDescriptorDataEXT}, ref) - if val isa Ptr{VkSampler} - ptr.pSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pCombinedImageSampler = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pInputAttachmentImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pSampledImage = val - elseif val isa Ptr{VkDescriptorImageInfo} - ptr.pStorageImage = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageTexelBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pUniformBuffer = val - elseif val isa Ptr{VkDescriptorAddressInfoEXT} - ptr.pStorageBuffer = val - elseif val isa VkDeviceAddress - ptr.accelerationStructure = val - end - ref[] +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData) + ccall((:vkGetShaderBinaryDataEXT, libvulkan), VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) end -struct VkDescriptorGetInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT +function vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkShaderEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, shader, pDataSize, pData) end -struct VkBufferCaptureDescriptorDataInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders) + ccall((:vkCmdBindShadersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -struct VkImageCaptureDescriptorDataInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage +function vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkShaderStageFlagBits}, Ptr{VkShaderEXT}), commandBuffer, stageCount, pStages, pShaders) end -struct VkImageViewCaptureDescriptorDataInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange) + ccall((:vkCmdSetDepthClampRangeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkSamplerCaptureDescriptorDataInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampler::VkSampler +function vkCmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDepthClampModeEXT, Ptr{VkDepthClampRangeEXT}), commandBuffer, depthClampMode, pDepthClampRange) end -struct VkOpaqueCaptureDescriptorDataCreateInfoEXT +struct VkPhysicalDeviceTilePropertiesFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureDescriptorData::Ptr{Cvoid} + tileProperties::VkBool32 end -struct VkAccelerationStructureCaptureDescriptorDataInfoEXT +struct VkTilePropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - accelerationStructureNV::VkAccelerationStructureNV + tileSize::VkExtent3D + apronSize::VkExtent2D + origin::VkOffset2D end -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSizeEXT ) ( VkDevice device , VkDescriptorSetLayout layout , VkDeviceSize * pLayoutSizeInBytes ) -const PFN_vkGetDescriptorSetLayoutSizeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutBindingOffsetEXT ) ( VkDevice device , VkDescriptorSetLayout layout , uint32_t binding , VkDeviceSize * pOffset ) -const PFN_vkGetDescriptorSetLayoutBindingOffsetEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorEXT ) ( VkDevice device , const VkDescriptorGetInfoEXT * pDescriptorInfo , size_t dataSize , void * pDescriptor ) -const PFN_vkGetDescriptorEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t bufferCount , const VkDescriptorBufferBindingInfoEXT * pBindingInfos ) -const PFN_vkCmdBindDescriptorBuffersEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDescriptorBufferOffsetsEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t setCount , const uint32_t * pBufferIndices , const VkDeviceSize * pOffsets ) -const PFN_vkCmdSetDescriptorBufferOffsetsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set ) -const PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM +const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkBufferCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM +const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) + ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkImageViewCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkSamplerCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) + ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) ( VkDevice device , const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo , void * pData ) -const PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = Ptr{Cvoid} +function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes) - ccall((:vkGetDescriptorSetLayoutSizeEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +struct VkPhysicalDeviceAmigoProfilingFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + amigoProfiling::VkBool32 end -function vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkDeviceSize}), device, layout, pLayoutSizeInBytes) +struct VkAmigoProfilingSubmitInfoSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + firstDrawTimestamp::UInt64 + swapBufferTimestamp::UInt64 end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset) - ccall((:vkGetDescriptorSetLayoutBindingOffsetEXT, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + multiviewPerViewViewports::VkBool32 end -function vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSetLayout, UInt32, Ptr{VkDeviceSize}), device, layout, binding, pOffset) +@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor) - ccall((:vkGetDescriptorEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV end -function vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorGetInfoEXT}, Csize_t, Ptr{Cvoid}), device, pDescriptorInfo, dataSize, pDescriptor) +struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingInvocationReorder::VkBool32 end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos) - ccall((:vkCmdBindDescriptorBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +@cenum VkCooperativeVectorMatrixLayoutNV::UInt32 begin + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3 + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 2147483647 end -function vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDescriptorBufferBindingInfoEXT}), commandBuffer, bufferCount, pBindingInfos) +struct VkPhysicalDeviceCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVectorSupportedStages::VkShaderStageFlags + cooperativeVectorTrainingFloat16Accumulation::VkBool32 + cooperativeVectorTrainingFloat32Accumulation::VkBool32 + maxCooperativeVectorComponents::UInt32 end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) - ccall((:vkCmdSetDescriptorBufferOffsetsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +struct VkPhysicalDeviceCooperativeVectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeVector::VkBool32 + cooperativeVectorTraining::VkBool32 end -function vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{UInt32}, Ptr{VkDeviceSize}), commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets) +struct VkCooperativeVectorPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + inputType::VkComponentTypeKHR + inputInterpretation::VkComponentTypeKHR + matrixInterpretation::VkComponentTypeKHR + biasInterpretation::VkComponentTypeKHR + resultType::VkComponentTypeKHR + transpose::VkBool32 end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set) - ccall((:vkCmdBindDescriptorBufferEmbeddedSamplersEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +struct VkConvertCooperativeVectorMatrixInfoNV + data::NTuple{96, UInt8} end -function vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32), commandBuffer, pipelineBindPoint, layout, set) +function Base.getproperty(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :srcSize && return Ptr{Csize_t}(x + 16) + f === :srcData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :pDstSize && return Ptr{Ptr{Csize_t}}(x + 32) + f === :dstData && return Ptr{VkDeviceOrHostAddressKHR}(x + 40) + f === :srcComponentType && return Ptr{VkComponentTypeKHR}(x + 48) + f === :dstComponentType && return Ptr{VkComponentTypeKHR}(x + 52) + f === :numRows && return Ptr{UInt32}(x + 56) + f === :numColumns && return Ptr{UInt32}(x + 60) + f === :srcLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 64) + f === :srcStride && return Ptr{Csize_t}(x + 72) + f === :dstLayout && return Ptr{VkCooperativeVectorMatrixLayoutNV}(x + 80) + f === :dstStride && return Ptr{Csize_t}(x + 88) + return getfield(x, f) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetBufferOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function Base.getproperty(x::VkConvertCooperativeVectorMatrixInfoNV, f::Symbol) + r = Ref{VkConvertCooperativeVectorMatrixInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkBufferCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function Base.setproperty!(x::Ptr{VkConvertCooperativeVectorMatrixInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function Base.propertynames(x::VkConvertCooperativeVectorMatrixInfoNV, private::Bool = false) + (:sType, :pNext, :srcSize, :srcData, :pDstSize, :dstData, :srcComponentType, :dstComponentType, :numRows, :numColumns, :srcLayout, :srcStride, :dstLayout, :dstStride, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkConvertCooperativeVectorMatrixInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, srcSize::Csize_t, srcData::VkDeviceOrHostAddressConstKHR, pDstSize::Ptr{Csize_t}, dstData::VkDeviceOrHostAddressKHR, srcComponentType::VkComponentTypeKHR, dstComponentType::VkComponentTypeKHR, numRows::UInt32, numColumns::UInt32, srcLayout::VkCooperativeVectorMatrixLayoutNV, srcStride::Csize_t, dstLayout::VkCooperativeVectorMatrixLayoutNV, dstStride::Csize_t) + ref = Ref{VkConvertCooperativeVectorMatrixInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkConvertCooperativeVectorMatrixInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.srcSize = srcSize + ptr.srcData = srcData + ptr.pDstSize = pDstSize + ptr.dstData = dstData + ptr.srcComponentType = srcComponentType + ptr.dstComponentType = dstComponentType + ptr.numRows = numRows + ptr.numColumns = numColumns + ptr.srcLayout = srcLayout + ptr.srcStride = srcStride + ptr.dstLayout = dstLayout + ptr.dstStride = dstStride + ref[] end -function vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV +const PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV = Ptr{Cvoid} -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetImageViewOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkConvertCooperativeVectorMatrixNV +const PFN_vkConvertCooperativeVectorMatrixNV = Ptr{Cvoid} -function vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImageViewCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdConvertCooperativeVectorMatrixNV +const PFN_vkCmdConvertCooperativeVectorMatrixNV = Ptr{Cvoid} -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetSamplerOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeVectorPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSamplerCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkGetPhysicalDeviceCooperativeVectorPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeVectorPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData) - ccall((:vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkConvertCooperativeVectorMatrixNV(device, pInfo) + ccall((:vkConvertCooperativeVectorMatrixNV, libvulkan), VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -function vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCaptureDescriptorDataInfoEXT}, Ptr{Cvoid}), device, pInfo, pData) +function vkConvertCooperativeVectorMatrixNV(device, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), device, pInfo) end -@cenum VkGraphicsPipelineLibraryFlagBitsEXT::UInt32 begin - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 1 - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 2 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 4 - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 8 - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos) + ccall((:vkCmdConvertCooperativeVectorMatrixNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) end -const VkGraphicsPipelineLibraryFlagsEXT = VkFlags +function vkCmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkConvertCooperativeVectorMatrixInfoNV}), commandBuffer, infoCount, pInfos) +end -struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibrary::VkBool32 + extendedSparseAddressSpace::VkBool32 end -struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT +struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - graphicsPipelineLibraryFastLinking::VkBool32 - graphicsPipelineLibraryIndependentInterpolationDecoration::VkBool32 + extendedSparseAddressSpaceSize::VkDeviceSize + extendedSparseImageUsageFlags::VkImageUsageFlags + extendedSparseBufferUsageFlags::VkBufferUsageFlags end -struct VkGraphicsPipelineLibraryCreateInfoEXT +struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkGraphicsPipelineLibraryFlagsEXT + legacyVertexAttributes::VkBool32 end -struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD +struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderEarlyAndLateFragmentTests::VkBool32 + nativeUnalignedPerformance::VkBool32 end -@cenum VkFragmentShadingRateTypeNV::UInt32 begin - 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 VkLayerSettingTypeEXT::UInt32 begin + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0 + VK_LAYER_SETTING_TYPE_INT32_EXT = 1 + VK_LAYER_SETTING_TYPE_INT64_EXT = 2 + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3 + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4 + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5 + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6 + VK_LAYER_SETTING_TYPE_STRING_EXT = 7 + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 2147483647 end -@cenum VkFragmentShadingRateNV::UInt32 begin - 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 +struct VkLayerSettingEXT + pLayerName::Ptr{Cchar} + pSettingName::Ptr{Cchar} + type::VkLayerSettingTypeEXT + valueCount::UInt32 + pValues::Ptr{Cvoid} end -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV +struct VkLayerSettingsCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 + settingCount::UInt32 + pSettings::Ptr{VkLayerSettingEXT} end -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV +struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM sType::VkStructureType pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits + shaderCoreBuiltins::VkBool32 end -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV +struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + shaderCoreMask::UInt64 + shaderCoreCount::UInt32 + shaderWarpsPerCore::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFragmentShadingRateEnumNV ) ( VkCommandBuffer commandBuffer , VkFragmentShadingRateNV shadingRate , const VkFragmentShadingRateCombinerOpKHR combinerOps [ 2 ] ) -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineLibraryGroupHandles::VkBool32 end -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, Ptr{VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) +struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dynamicRenderingUnusedAttachments::VkBool32 end -@cenum VkAccelerationStructureMotionInstanceTypeNV::UInt32 begin - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2 - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 2147483647 +@cenum VkLatencyMarkerNV::UInt32 begin + VK_LATENCY_MARKER_SIMULATION_START_NV = 0 + VK_LATENCY_MARKER_SIMULATION_END_NV = 1 + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2 + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3 + VK_LATENCY_MARKER_PRESENT_START_NV = 4 + VK_LATENCY_MARKER_PRESENT_END_NV = 5 + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6 + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8 + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10 + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11 + VK_LATENCY_MARKER_MAX_ENUM_NV = 2147483647 end -const VkAccelerationStructureMotionInfoFlagsNV = VkFlags +@cenum VkOutOfBandQueueTypeNV::UInt32 begin + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0 + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1 + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 2147483647 +end -const VkAccelerationStructureMotionInstanceFlagsNV = VkFlags +struct VkLatencySleepModeInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + lowLatencyMode::VkBool32 + lowLatencyBoost::VkBool32 + minimumIntervalUs::UInt32 +end -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} +struct VkLatencySleepInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + signalSemaphore::VkSemaphore + value::UInt64 end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +struct VkSetLatencyMarkerInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 + marker::VkLatencyMarkerNV end -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkLatencyTimingsFrameReportNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 + inputSampleTimeUs::UInt64 + simStartTimeUs::UInt64 + simEndTimeUs::UInt64 + renderSubmitStartTimeUs::UInt64 + renderSubmitEndTimeUs::UInt64 + presentStartTimeUs::UInt64 + presentEndTimeUs::UInt64 + driverStartTimeUs::UInt64 + driverEndTimeUs::UInt64 + osRenderQueueStartTimeUs::UInt64 + osRenderQueueEndTimeUs::UInt64 + gpuRenderStartTimeUs::UInt64 + gpuRenderEndTimeUs::UInt64 end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkGetLatencyMarkerInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + timingCount::UInt32 + pTimings::Ptr{VkLatencyTimingsFrameReportNV} end -const __U_VkDeviceOrHostAddressConstKHR = Union{VkDeviceAddress, Ptr{Cvoid}} +struct VkLatencySubmissionPresentIdNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentID::UInt64 +end -function VkDeviceOrHostAddressConstKHR(val::__U_VkDeviceOrHostAddressConstKHR) - ref = Ref{VkDeviceOrHostAddressConstKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +struct VkSwapchainLatencyCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + latencyModeEnable::VkBool32 end -struct VkAccelerationStructureGeometryMotionTrianglesDataNV +struct VkOutOfBandQueueTypeInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR + queueType::VkOutOfBandQueueTypeNV end -struct VkAccelerationStructureMotionInfoNV +struct VkLatencySurfaceCapabilitiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxInstances::UInt32 - flags::VkAccelerationStructureMotionInfoFlagsNV + presentModeCount::UInt32 + pPresentModes::Ptr{VkPresentModeKHR} end -struct VkAccelerationStructureMatrixMotionInstanceNV - data::NTuple{112, UInt8} +# typedef VkResult ( VKAPI_PTR * PFN_vkSetLatencySleepModeNV +const PFN_vkSetLatencySleepModeNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkLatencySleepNV +const PFN_vkLatencySleepNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSetLatencyMarkerNV +const PFN_vkSetLatencyMarkerNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetLatencyTimingsNV +const PFN_vkGetLatencyTimingsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueNotifyOutOfBandNV +const PFN_vkQueueNotifyOutOfBandNV = Ptr{Cvoid} + +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo) + ccall((:vkSetLatencySleepModeNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) end -function Base.getproperty(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :transformT1 && return Ptr{VkTransformMatrixKHR}(x + 48) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 96), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 96), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 100), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 100), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 104) - return getfield(x, f) +function vkSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepModeInfoNV}), device, swapchain, pSleepModeInfo) end -function Base.getproperty(x::VkAccelerationStructureMatrixMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureMatrixMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +function vkLatencySleepNV(device, swapchain, pSleepInfo) + ccall((:vkLatencySleepNV, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +function vkLatencySleepNV(device, swapchain, pSleepInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkLatencySleepInfoNV}), device, swapchain, pSleepInfo) end -function VkAccelerationStructureMatrixMotionInstanceNV(transformT0::VkTransformMatrixKHR, transformT1::VkTransformMatrixKHR, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureMatrixMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMatrixMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkSetLatencyMarkerNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) +end + +function vkSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkSetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) +end + +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo) + ccall((:vkGetLatencyTimingsNV, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) +end + +function vkGetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkGetLatencyMarkerInfoNV}), device, swapchain, pLatencyMarkerInfo) +end + +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo) + ccall((:vkQueueNotifyOutOfBandNV, libvulkan), Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -struct VkSRTDataNV - sx::Cfloat - a::Cfloat - b::Cfloat - pvx::Cfloat - sy::Cfloat - c::Cfloat - pvy::Cfloat - sz::Cfloat - pvz::Cfloat - qx::Cfloat - qy::Cfloat - qz::Cfloat - qw::Cfloat - tx::Cfloat - ty::Cfloat - tz::Cfloat +function vkQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, fptr) + ccall(fptr, Cvoid, (VkQueue, Ptr{VkOutOfBandQueueTypeInfoNV}), queue, pQueueTypeInfo) end -struct VkAccelerationStructureSRTMotionInstanceNV - data::NTuple{144, UInt8} +const VkDataGraphPipelineSessionARM_T = Cvoid + +const VkDataGraphPipelineSessionARM = Ptr{VkDataGraphPipelineSessionARM_T} + +@cenum VkDataGraphPipelineSessionBindPointARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 2147483647 end -function Base.getproperty(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol) - f === :transformT0 && return Ptr{VkSRTDataNV}(x + 0) - f === :transformT1 && return Ptr{VkSRTDataNV}(x + 64) - f === :instanceCustomIndex && return (Ptr{UInt32}(x + 128), 0, 24) - f === :mask && return (Ptr{UInt32}(x + 128), 24, 8) - f === :instanceShaderBindingTableRecordOffset && return (Ptr{UInt32}(x + 132), 0, 24) - f === :flags && return (Ptr{VkGeometryInstanceFlagsKHR}(x + 132), 24, 8) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 136) - return getfield(x, f) +@cenum VkDataGraphPipelineSessionBindPointTypeARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0 + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 2147483647 end -function Base.getproperty(x::VkAccelerationStructureSRTMotionInstanceNV, f::Symbol) - r = Ref{VkAccelerationStructureSRTMotionInstanceNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, 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) - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = GC.@preserve(r, unsafe_load(baseptr32)) - if offset + width > 32 - u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 - end - u64 = u64 >> offset & (1 << width - 1) - return u64 % ty - end - end +@cenum VkDataGraphPipelinePropertyARM::UInt32 begin + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0 + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1 + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 2147483647 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureSRTMotionInstanceNV}, f::Symbol, v) - fptr = getproperty(x, f) - if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) - else - (baseptr, offset, width) = fptr - baseptr32 = convert(Ptr{UInt32}, baseptr) - u64 = unsafe_load(baseptr32) - straddle = offset + width > 32 - if straddle - u64 |= unsafe_load(baseptr32 + 4) << 32 - end - mask = 1 << width - 1 - u64 &= ~(mask << offset) - u64 |= (unsigned(v) & mask) << offset - unsafe_store!(baseptr32, u64 & typemax(UInt32)) - if straddle - unsafe_store!(baseptr32 + 4, u64 >> 32) - end - end +@cenum VkPhysicalDeviceDataGraphProcessingEngineTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 2147483647 end -function VkAccelerationStructureSRTMotionInstanceNV(transformT0::VkSRTDataNV, transformT1::VkSRTDataNV, instanceCustomIndex::UInt32, mask::UInt32, instanceShaderBindingTableRecordOffset::UInt32, flags::VkGeometryInstanceFlagsKHR, accelerationStructureReference::UInt64) - ref = Ref{VkAccelerationStructureSRTMotionInstanceNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureSRTMotionInstanceNV}, ref) - ptr.transformT0 = transformT0 - ptr.transformT1 = transformT1 - ptr.instanceCustomIndex = instanceCustomIndex - ptr.mask = mask - ptr.instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset - ptr.flags = flags - ptr.accelerationStructureReference = accelerationStructureReference - ref[] +@cenum VkPhysicalDeviceDataGraphOperationTypeARM::UInt32 begin + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0 + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 2147483647 end -struct VkAccelerationStructureMotionInstanceDataNV - data::NTuple{144, UInt8} +const VkDataGraphPipelineSessionCreateFlagsARM = VkFlags64 + +const VkDataGraphPipelineSessionCreateFlagBitsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagsARM = VkFlags64 + +const VkDataGraphPipelineDispatchFlagBitsARM = VkFlags64 + +struct VkPhysicalDeviceDataGraphFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dataGraph::VkBool32 + dataGraphUpdateAfterBind::VkBool32 + dataGraphSpecializationConstants::VkBool32 + dataGraphDescriptorBuffer::VkBool32 + dataGraphShaderModule::VkBool32 end -function Base.getproperty(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol) - f === :staticInstance && return Ptr{VkAccelerationStructureInstanceKHR}(x + 0) - f === :matrixMotionInstance && return Ptr{VkAccelerationStructureMatrixMotionInstanceNV}(x + 0) - f === :srtMotionInstance && return Ptr{VkAccelerationStructureSRTMotionInstanceNV}(x + 0) - return getfield(x, f) +struct VkDataGraphPipelineConstantARM + sType::VkStructureType + pNext::Ptr{Cvoid} + id::UInt32 + pConstantData::Ptr{Cvoid} end -function Base.getproperty(x::VkAccelerationStructureMotionInstanceDataNV, f::Symbol) - r = Ref{VkAccelerationStructureMotionInstanceDataNV}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +struct VkDataGraphPipelineResourceInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSet::UInt32 + binding::UInt32 + arrayElement::UInt32 end -function Base.setproperty!(x::Ptr{VkAccelerationStructureMotionInstanceDataNV}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +struct VkDataGraphPipelineCompilerControlCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pVendorOptions::Ptr{Cchar} end -const __U_VkAccelerationStructureMotionInstanceDataNV = Union{VkAccelerationStructureInstanceKHR, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureSRTMotionInstanceNV} +struct VkDataGraphPipelineCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags2KHR + layout::VkPipelineLayout + resourceInfoCount::UInt32 + pResourceInfos::Ptr{VkDataGraphPipelineResourceInfoARM} +end -function VkAccelerationStructureMotionInstanceDataNV(val::__U_VkAccelerationStructureMotionInstanceDataNV) - ref = Ref{VkAccelerationStructureMotionInstanceDataNV}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureMotionInstanceDataNV}, ref) - if val isa VkAccelerationStructureInstanceKHR - ptr.staticInstance = val - elseif val isa VkAccelerationStructureMatrixMotionInstanceNV - ptr.matrixMotionInstance = val - elseif val isa VkAccelerationStructureSRTMotionInstanceNV - ptr.srtMotionInstance = val - end - ref[] +struct VkDataGraphPipelineShaderModuleCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} + constantCount::UInt32 + pConstants::Ptr{VkDataGraphPipelineConstantARM} end -struct VkAccelerationStructureMotionInstanceNV - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV +struct VkDataGraphPipelineSessionCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineSessionCreateFlagsARM + dataGraphPipeline::VkPipeline end -struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV +struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingMotionBlur::VkBool32 - rayTracingMotionBlurPipelineTraceRaysIndirect::VkBool32 + session::VkDataGraphPipelineSessionARM end -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT +struct VkDataGraphPipelineSessionBindPointRequirementARM sType::VkStructureType pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 + bindPoint::VkDataGraphPipelineSessionBindPointARM + bindPointType::VkDataGraphPipelineSessionBindPointTypeARM + numObjects::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkBindDataGraphPipelineSessionMemoryInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 + session::VkDataGraphPipelineSessionARM + bindPoint::VkDataGraphPipelineSessionBindPointARM + objectIndex::UInt32 + memory::VkDeviceMemory + memoryOffset::VkDeviceSize end -struct VkCopyCommandTransformInfoQCOM +struct VkDataGraphPipelineInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR + dataGraphPipeline::VkPipeline end -const VkPhysicalDeviceImageRobustnessFeaturesEXT = VkPhysicalDeviceImageRobustnessFeatures +struct VkDataGraphPipelinePropertyQueryResultARM + sType::VkStructureType + pNext::Ptr{Cvoid} + property::VkDataGraphPipelinePropertyARM + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end -@cenum VkImageCompressionFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 2 - VK_IMAGE_COMPRESSION_DISABLED_EXT = 4 - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkDataGraphPipelineIdentifierCreateInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + identifierSize::UInt32 + pIdentifier::Ptr{UInt8} end -const VkImageCompressionFlagsEXT = VkFlags +struct VkDataGraphPipelineDispatchInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDataGraphPipelineDispatchFlagsARM +end -@cenum VkImageCompressionFixedRateFlagBitsEXT::UInt32 begin - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0 - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 1 - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 2 - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 4 - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 8 - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 16 - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 32 - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 64 - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 128 - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 256 - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 512 - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 1024 - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 2048 - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 4096 - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 8192 - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 16384 - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 32768 - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 65536 - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 131072 - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 262144 - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 524288 - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 1048576 - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 2097152 - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 4194304 - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 8388608 - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDeviceDataGraphProcessingEngineARM + type::VkPhysicalDeviceDataGraphProcessingEngineTypeARM + isForeign::VkBool32 end -const VkImageCompressionFixedRateFlagsEXT = VkFlags +struct VkPhysicalDeviceDataGraphOperationSupportARM + operationType::VkPhysicalDeviceDataGraphOperationTypeARM + name::NTuple{128, Cchar} + version::UInt32 +end -struct VkPhysicalDeviceImageCompressionControlFeaturesEXT +struct VkQueueFamilyDataGraphPropertiesARM sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControl::VkBool32 + engine::VkPhysicalDeviceDataGraphProcessingEngineARM + operation::VkPhysicalDeviceDataGraphOperationSupportARM end -struct VkImageCompressionControlEXT +struct VkDataGraphProcessingEngineCreateInfoARM sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCompressionFlagsEXT - compressionControlPlaneCount::UInt32 - pFixedRateFlags::Ptr{VkImageCompressionFixedRateFlagsEXT} + processingEngineCount::UInt32 + pProcessingEngines::Ptr{VkPhysicalDeviceDataGraphProcessingEngineARM} +end + +struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + engineType::VkPhysicalDeviceDataGraphProcessingEngineTypeARM +end + +struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + foreignSemaphoreHandleTypes::VkExternalSemaphoreHandleTypeFlags + foreignMemoryHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM + sType::VkStructureType + pNext::Ptr{Cvoid} + dimension::UInt32 + zeroCount::UInt32 + groupSize::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelinesARM +const PFN_vkCreateDataGraphPipelinesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDataGraphPipelineSessionARM +const PFN_vkCreateDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM +const PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM +const PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindDataGraphPipelineSessionMemoryARM +const PFN_vkBindDataGraphPipelineSessionMemoryARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDataGraphPipelineSessionARM +const PFN_vkDestroyDataGraphPipelineSessionARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchDataGraphARM +const PFN_vkCmdDispatchDataGraphARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelineAvailablePropertiesARM +const PFN_vkGetDataGraphPipelineAvailablePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDataGraphPipelinePropertiesARM +const PFN_vkGetDataGraphPipelinePropertiesARM = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM +const PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = Ptr{Cvoid} + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateDataGraphPipelinesARM, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkDataGraphPipelineCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession) + ccall((:vkCreateDataGraphPipelineSessionARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionCreateInfoARM}, Ptr{VkAllocationCallbacks}, Ptr{VkDataGraphPipelineSessionARM}), device, pCreateInfo, pAllocator, pSession) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements) + ccall((:vkGetDataGraphPipelineSessionBindPointRequirementsARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineSessionBindPointRequirementsInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelineSessionBindPointRequirementARM}), device, pInfo, pBindPointRequirementCount, pBindPointRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements) + ccall((:vkGetDataGraphPipelineSessionMemoryRequirementsARM, libvulkan), Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkDataGraphPipelineSessionMemoryRequirementsInfoARM}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos) + ccall((:vkBindDataGraphPipelineSessionMemoryARM, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkBindDataGraphPipelineSessionMemoryInfoARM}), device, bindInfoCount, pBindInfos) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator) + ccall((:vkDestroyDataGraphPipelineSessionARM, libvulkan), Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkDataGraphPipelineSessionARM, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo) + ccall((:vkCmdDispatchDataGraphARM, libvulkan), Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) +end + +function vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkDataGraphPipelineSessionARM, Ptr{VkDataGraphPipelineDispatchInfoARM}), commandBuffer, session, pInfo) end -struct VkSubresourceLayout2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties) + ccall((:vkGetDataGraphPipelineAvailablePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -struct VkImageSubresource2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource +function vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, Ptr{UInt32}, Ptr{VkDataGraphPipelinePropertyARM}), device, pPipelineInfo, pPropertiesCount, pProperties) end -struct VkImageCompressionPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties) + ccall((:vkGetDataGraphPipelinePropertiesARM, libvulkan), VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) end -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} +function vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkDataGraphPipelineInfoARM}, UInt32, Ptr{VkDataGraphPipelinePropertyQueryResultARM}), device, pPipelineInfo, propertiesCount, pProperties) +end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) +function vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkQueueFamilyDataGraphPropertiesARM}), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties) end -struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +function vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties, fptr) + ccall(fptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM}, Ptr{VkQueueFamilyDataGraphProcessingEnginePropertiesARM}), physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties) +end + +struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - attachmentFeedbackLoopLayout::VkBool32 + multiviewPerViewRenderAreas::VkBool32 end -struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 + perViewRenderAreaCount::UInt32 + pPerViewRenderAreas::Ptr{VkRect2D} end -@cenum VkDeviceFaultAddressTypeEXT::UInt32 begin - VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0 - VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1 - VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2 - VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5 - VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6 - VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + perStageDescriptorSet::VkBool32 + dynamicPipelineLayout::VkBool32 end -@cenum VkDeviceFaultVendorBinaryHeaderVersionEXT::UInt32 begin - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1 - VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +@cenum VkBlockMatchWindowCompareModeQCOM::UInt32 begin + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1 + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 2147483647 end -struct VkPhysicalDeviceFaultFeaturesEXT +struct VkPhysicalDeviceImageProcessing2FeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - deviceFault::VkBool32 - deviceFaultVendorBinary::VkBool32 + textureBlockMatch2::VkBool32 end -struct VkDeviceFaultCountsEXT +struct VkPhysicalDeviceImageProcessing2PropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - addressInfoCount::UInt32 - vendorInfoCount::UInt32 - vendorBinarySize::VkDeviceSize + maxBlockMatchWindow::VkExtent2D end -struct VkDeviceFaultAddressInfoEXT - addressType::VkDeviceFaultAddressTypeEXT - reportedAddress::VkDeviceAddress - addressPrecision::VkDeviceSize +struct VkSamplerBlockMatchWindowCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + windowExtent::VkExtent2D + windowCompareMode::VkBlockMatchWindowCompareModeQCOM end -struct VkDeviceFaultVendorInfoEXT - description::NTuple{256, Cchar} - vendorFaultCode::UInt64 - vendorFaultData::UInt64 +@cenum VkCubicFilterWeightsQCOM::UInt32 begin + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0 + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1 + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2 + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3 + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 2147483647 end -struct VkDeviceFaultInfoEXT +struct VkPhysicalDeviceCubicWeightsFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - description::NTuple{256, Cchar} - pAddressInfos::Ptr{VkDeviceFaultAddressInfoEXT} - pVendorInfos::Ptr{VkDeviceFaultVendorInfoEXT} - pVendorBinaryData::Ptr{Cvoid} + selectableCubicWeights::VkBool32 end -struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT - headerSize::UInt32 - headerVersion::VkDeviceFaultVendorBinaryHeaderVersionEXT - vendorID::UInt32 - deviceID::UInt32 - driverVersion::UInt32 - pipelineCacheUUID::NTuple{16, UInt8} - applicationNameOffset::UInt32 - applicationVersion::UInt32 - engineNameOffset::UInt32 +struct VkSamplerCubicWeightsCreateInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceFaultInfoEXT ) ( VkDevice device , VkDeviceFaultCountsEXT * pFaultCounts , VkDeviceFaultInfoEXT * pFaultInfo ) -const PFN_vkGetDeviceFaultInfoEXT = Ptr{Cvoid} - -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo) - ccall((:vkGetDeviceFaultInfoEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +struct VkBlitImageCubicWeightsInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + cubicWeights::VkCubicFilterWeightsQCOM end -function vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkDeviceFaultCountsEXT}, Ptr{VkDeviceFaultInfoEXT}), device, pFaultCounts, pFaultInfo) +struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrDegamma::VkBool32 end -struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT +struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - rasterizationOrderColorAttachmentAccess::VkBool32 - rasterizationOrderDepthAttachmentAccess::VkBool32 - rasterizationOrderStencilAttachmentAccess::VkBool32 + enableYDegamma::VkBool32 + enableCbCrDegamma::VkBool32 end -const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT - -struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT +struct VkPhysicalDeviceCubicClampFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - formatRgba10x6WithoutYCbCrSampler::VkBool32 + cubicRangeClamp::VkBool32 end -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 + attachmentFeedbackLoopDynamicState::VkBool32 end -const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT +# typedef void ( VKAPI_PTR * PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT +const PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT = Ptr{Cvoid} -struct VkMutableDescriptorTypeListEXT - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask) + ccall((:vkCmdSetAttachmentFeedbackLoopEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) end -const VkMutableDescriptorTypeListVALVE = VkMutableDescriptorTypeListEXT +function vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkImageAspectFlags), commandBuffer, aspectMask) +end -struct VkMutableDescriptorTypeCreateInfoEXT +@cenum VkLayeredDriverUnderlyingApiMSFT::UInt32 begin + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0 + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1 + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 2147483647 +end + +struct VkPhysicalDeviceLayeredDriverPropertiesMSFT sType::VkStructureType pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListEXT} + underlyingAPI::VkLayeredDriverUnderlyingApiMSFT end -const VkMutableDescriptorTypeCreateInfoVALVE = VkMutableDescriptorTypeCreateInfoEXT - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT +struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 + descriptorPoolOverallocation::VkBool32 end -struct VkVertexInputBindingDescription2EXT +struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 + tileMemoryHeap::VkBool32 end -struct VkVertexInputAttributeDescription2EXT +struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM sType::VkStructureType pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 + queueSubmitBoundary::VkBool32 + tileBufferTransfers::VkBool32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetVertexInputEXT ) ( VkCommandBuffer commandBuffer , uint32_t vertexBindingDescriptionCount , const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions , uint32_t vertexAttributeDescriptionCount , const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} - -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkTileMemoryRequirementsQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + size::VkDeviceSize + alignment::VkDeviceSize end -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) +struct VkTileMemoryBindInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory end -struct VkPhysicalDeviceDrmPropertiesEXT +struct VkTileMemorySizeInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - hasPrimary::VkBool32 - hasRender::VkBool32 - primaryMajor::Int64 - primaryMinor::Int64 - renderMajor::Int64 - renderMinor::Int64 + size::VkDeviceSize end -@cenum VkDeviceAddressBindingTypeEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0 - VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTileMemoryQCOM +const PFN_vkCmdBindTileMemoryQCOM = Ptr{Cvoid} -@cenum VkDeviceAddressBindingFlagBitsEXT::UInt32 begin - VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 1 - VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo) + ccall((:vkCmdBindTileMemoryQCOM, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) end -const VkDeviceAddressBindingFlagsEXT = VkFlags +function vkCmdBindTileMemoryQCOM(commandBuffer, pTileMemoryBindInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkTileMemoryBindInfoQCOM}), commandBuffer, pTileMemoryBindInfo) +end -struct VkPhysicalDeviceAddressBindingReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - reportAddressBinding::VkBool32 +@cenum VkDisplaySurfaceStereoTypeNV::UInt32 begin + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0 + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1 + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2 + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3 + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 2147483647 end -struct VkDeviceAddressBindingCallbackDataEXT +struct VkDisplaySurfaceStereoCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceAddressBindingFlagsEXT - baseAddress::VkDeviceAddress - size::VkDeviceSize - bindingType::VkDeviceAddressBindingTypeEXT + stereoType::VkDisplaySurfaceStereoTypeNV end -struct VkPhysicalDeviceDepthClipControlFeaturesEXT +struct VkDisplayModeStereoPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - depthClipControl::VkBool32 + hdmi3DSupported::VkBool32 end -struct VkPipelineViewportDepthClipControlCreateInfoEXT +struct VkPhysicalDeviceRawAccessChainsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - negativeOneToOne::VkBool32 + shaderRawAccessChains::VkBool32 end -struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT +const VkExternalComputeQueueNV_T = Cvoid + +const VkExternalComputeQueueNV = Ptr{VkExternalComputeQueueNV_T} + +struct VkExternalComputeQueueDeviceCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - primitiveTopologyListRestart::VkBool32 - primitiveTopologyPatchListRestart::VkBool32 + reservedExternalQueues::UInt32 end -struct VkSubpassShadingPipelineCreateInfoHUAWEI +struct VkExternalComputeQueueCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 + preferredQueue::VkQueue end -struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI +struct VkExternalComputeQueueDataParamsNV sType::VkStructureType pNext::Ptr{Cvoid} - subpassShading::VkBool32 + deviceIndex::UInt32 end -struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI +struct VkPhysicalDeviceExternalComputeQueuePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - maxSubpassShadingWorkgroupSizeAspectRatio::UInt32 + externalDataSize::UInt32 + maxExternalQueues::UInt32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) ( VkDevice device , VkRenderPass renderpass , VkExtent2D * pMaxWorkgroupSize ) -const PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateExternalComputeQueueNV +const PFN_vkCreateExternalComputeQueueNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSubpassShadingHUAWEI ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdSubpassShadingHUAWEI = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkDestroyExternalComputeQueueNV +const PFN_vkDestroyExternalComputeQueueNV = Ptr{Cvoid} -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize) - ccall((:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, libvulkan), VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) -end +# typedef void ( VKAPI_PTR * PFN_vkGetExternalComputeQueueDataNV +const PFN_vkGetExternalComputeQueueDataNV = Ptr{Cvoid} -function vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, fptr) - ccall(fptr, VkResult, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderpass, pMaxWorkgroupSize) +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue) + ccall((:vkCreateExternalComputeQueueNV, libvulkan), VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -function vkCmdSubpassShadingHUAWEI(commandBuffer) - ccall((:vkCmdSubpassShadingHUAWEI, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +function vkCreateExternalComputeQueueNV(device, pCreateInfo, pAllocator, pExternalQueue, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkExternalComputeQueueCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkExternalComputeQueueNV}), device, pCreateInfo, pAllocator, pExternalQueue) end -function vkCmdSubpassShadingHUAWEI(commandBuffer, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer,), commandBuffer) +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator) + ccall((:vkDestroyExternalComputeQueueNV, libvulkan), Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI - sType::VkStructureType - pNext::Ptr{Cvoid} - invocationMask::VkBool32 +function vkDestroyExternalComputeQueueNV(device, externalQueue, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkExternalComputeQueueNV, Ptr{VkAllocationCallbacks}), device, externalQueue, pAllocator) end -# typedef void ( VKAPI_PTR * PFN_vkCmdBindInvocationMaskHUAWEI ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindInvocationMaskHUAWEI = Ptr{Cvoid} +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData) + ccall((:vkGetExternalComputeQueueDataNV, libvulkan), Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) +end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindInvocationMaskHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +function vkGetExternalComputeQueueDataNV(externalQueue, params, pData, fptr) + ccall(fptr, Cvoid, (VkExternalComputeQueueNV, Ptr{VkExternalComputeQueueDataParamsNV}, Ptr{Cvoid}), externalQueue, params, pData) end -function vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + commandBufferInheritance::VkBool32 end -const VkRemoteAddressNV = Ptr{Cvoid} +struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16VectorAtomics::VkBool32 +end -struct VkMemoryGetRemoteAddressInfoNV +struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + shaderReplicatedComposites::VkBool32 end -struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV +struct VkPhysicalDeviceShaderFloat8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryRDMA::VkBool32 + shaderFloat8::VkBool32 + shaderFloat8CooperativeMatrix::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryRemoteAddressNV ) ( VkDevice device , const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo , VkRemoteAddressNV * pAddress ) -const PFN_vkGetMemoryRemoteAddressNV = Ptr{Cvoid} +struct VkPhysicalDeviceRayTracingValidationFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracingValidation::VkBool32 +end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress) - ccall((:vkGetMemoryRemoteAddressNV, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkClusterAccelerationStructureTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 2147483647 end -function vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetRemoteAddressInfoNV}, Ptr{VkRemoteAddressNV}), device, pMemoryGetRemoteAddressInfo, pAddress) +@cenum VkClusterAccelerationStructureOpTypeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -const VkPipelineInfoEXT = VkPipelineInfoKHR +@cenum VkClusterAccelerationStructureOpModeNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 2147483647 +end -struct VkPipelinePropertiesIdentifierEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineIdentifier::NTuple{16, UInt8} +@cenum VkClusterAccelerationStructureAddressResolutionFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 8 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 16 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 32 + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDevicePipelinePropertiesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelinePropertiesIdentifier::VkBool32 +const VkClusterAccelerationStructureAddressResolutionFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureClusterFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelinePropertiesEXT ) ( VkDevice device , const VkPipelineInfoEXT * pPipelineInfo , VkBaseOutStructure * pPipelineProperties ) -const PFN_vkGetPipelinePropertiesEXT = Ptr{Cvoid} +const VkClusterAccelerationStructureClusterFlagsNV = VkFlags -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties) - ccall((:vkGetPipelinePropertiesEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +@cenum VkClusterAccelerationStructureGeometryFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -function vkGetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPipelineInfoEXT}, Ptr{VkBaseOutStructure}), device, pPipelineInfo, pPipelineProperties) +const VkClusterAccelerationStructureGeometryFlagsNV = VkFlags + +@cenum VkClusterAccelerationStructureIndexFormatFlagBitsNV::UInt32 begin + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 1 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 2 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 4 + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT +const VkClusterAccelerationStructureIndexFormatFlagsNV = VkFlags + +struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampled::VkBool32 + clusterAccelerationStructure::VkBool32 end -struct VkSubpassResolvePerformanceQueryEXT +struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - optimal::VkBool32 + maxVerticesPerCluster::UInt32 + maxTrianglesPerCluster::UInt32 + clusterScratchByteAlignment::UInt32 + clusterByteAlignment::UInt32 + clusterTemplateByteAlignment::UInt32 + clusterBottomLevelByteAlignment::UInt32 + clusterTemplateBoundsByteAlignment::UInt32 + maxClusterGeometryIndex::UInt32 end -struct VkMultisampledRenderToSingleSampledInfoEXT +struct VkClusterAccelerationStructureClustersBottomLevelInputNV sType::VkStructureType pNext::Ptr{Cvoid} - multisampledRenderToSingleSampledEnable::VkBool32 - rasterizationSamples::VkSampleCountFlagBits + maxTotalClusterCount::UInt32 + maxClusterCountPerAccelerationStructure::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT +struct VkClusterAccelerationStructureTriangleClusterInputNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 + vertexFormat::VkFormat + maxGeometryIndexValue::UInt32 + maxClusterUniqueGeometryCount::UInt32 + maxClusterTriangleCount::UInt32 + maxClusterVertexCount::UInt32 + maxTotalTriangleCount::UInt32 + maxTotalVertexCount::UInt32 + minPositionTruncateBitCount::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPatchControlPointsEXT ) ( VkCommandBuffer commandBuffer , uint32_t patchControlPoints ) -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizerDiscardEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 rasterizerDiscardEnable ) -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureMoveObjectsInputNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkClusterAccelerationStructureTypeNV + noMoveOverlap::VkBool32 + maxMovedBytes::VkDeviceSize +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBiasEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBiasEnable ) -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureOpInputNV + data::NTuple{8, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEXT ) ( VkCommandBuffer commandBuffer , VkLogicOp logicOp ) -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol) + f === :pClustersBottomLevel && return Ptr{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}}(x + 0) + f === :pTriangleClusters && return Ptr{Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}}(x + 0) + f === :pMoveObjects && return Ptr{Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}}(x + 0) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveRestartEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 primitiveRestartEnable ) -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureOpInputNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureOpInputNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureOpInputNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) +function Base.propertynames(x::VkClusterAccelerationStructureOpInputNV, private::Bool = false) + (:pClustersBottomLevel, :pTriangleClusters, :pMoveObjects, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +const __U_VkClusterAccelerationStructureOpInputNV = Union{Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV}, Ptr{VkClusterAccelerationStructureTriangleClusterInputNV}, Ptr{VkClusterAccelerationStructureMoveObjectsInputNV}} + +function VkClusterAccelerationStructureOpInputNV(val::__U_VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureOpInputNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureOpInputNV}, ref) + if val isa Ptr{VkClusterAccelerationStructureClustersBottomLevelInputNV} + ptr.pClustersBottomLevel = val + elseif val isa Ptr{VkClusterAccelerationStructureTriangleClusterInputNV} + ptr.pTriangleClusters = val + elseif val isa Ptr{VkClusterAccelerationStructureMoveObjectsInputNV} + ptr.pMoveObjects = val + end + ref[] end -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) +struct VkClusterAccelerationStructureInputInfoNV + data::NTuple{40, UInt8} end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :maxAccelerationStructureCount && return Ptr{UInt32}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :opType && return Ptr{VkClusterAccelerationStructureOpTypeNV}(x + 24) + f === :opMode && return Ptr{VkClusterAccelerationStructureOpModeNV}(x + 28) + f === :opInput && return Ptr{VkClusterAccelerationStructureOpInputNV}(x + 32) + return getfield(x, f) end -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) +function Base.getproperty(x::VkClusterAccelerationStructureInputInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInputInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInputInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) +function Base.propertynames(x::VkClusterAccelerationStructureInputInfoNV, private::Bool = false) + (:sType, :pNext, :maxAccelerationStructureCount, :flags, :opType, :opMode, :opInput, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +function VkClusterAccelerationStructureInputInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, maxAccelerationStructureCount::UInt32, flags::VkBuildAccelerationStructureFlagsKHR, opType::VkClusterAccelerationStructureOpTypeNV, opMode::VkClusterAccelerationStructureOpModeNV, opInput::VkClusterAccelerationStructureOpInputNV) + ref = Ref{VkClusterAccelerationStructureInputInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInputInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.maxAccelerationStructureCount = maxAccelerationStructureCount + ptr.flags = flags + ptr.opType = opType + ptr.opMode = opMode + ptr.opInput = opInput + ref[] end -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) +struct VkStridedDeviceAddressRegionKHR + deviceAddress::VkDeviceAddress + stride::VkDeviceSize + size::VkDeviceSize end -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 +struct VkClusterAccelerationStructureCommandsInfoNV + data::NTuple{160, UInt8} end -struct VkPipelineColorWriteCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :input && return Ptr{VkClusterAccelerationStructureInputInfoNV}(x + 16) + f === :dstImplicitData && return Ptr{VkDeviceAddress}(x + 56) + f === :scratchData && return Ptr{VkDeviceAddress}(x + 64) + f === :dstAddressesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 72) + f === :dstSizesArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 96) + f === :srcInfosArray && return Ptr{VkStridedDeviceAddressRegionKHR}(x + 120) + f === :srcInfosCount && return Ptr{VkDeviceAddress}(x + 144) + f === :addressResolutionFlags && return Ptr{VkClusterAccelerationStructureAddressResolutionFlagsNV}(x + 152) + return getfield(x, f) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkBool32 * pColorWriteEnables ) -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} +function Base.getproperty(x::VkClusterAccelerationStructureCommandsInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureCommandsInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureCommandsInfoNV}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) +function Base.propertynames(x::VkClusterAccelerationStructureCommandsInfoNV, private::Bool = false) + (:sType, :pNext, :input, :dstImplicitData, :scratchData, :dstAddressesArray, :dstSizesArray, :srcInfosArray, :srcInfosCount, :addressResolutionFlags, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureCommandsInfoNV(sType::VkStructureType, pNext::Ptr{Cvoid}, input::VkClusterAccelerationStructureInputInfoNV, dstImplicitData::VkDeviceAddress, scratchData::VkDeviceAddress, dstAddressesArray::VkStridedDeviceAddressRegionKHR, dstSizesArray::VkStridedDeviceAddressRegionKHR, srcInfosArray::VkStridedDeviceAddressRegionKHR, srcInfosCount::VkDeviceAddress, addressResolutionFlags::VkClusterAccelerationStructureAddressResolutionFlagsNV) + ref = Ref{VkClusterAccelerationStructureCommandsInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureCommandsInfoNV}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.input = input + ptr.dstImplicitData = dstImplicitData + ptr.scratchData = scratchData + ptr.dstAddressesArray = dstAddressesArray + ptr.dstSizesArray = dstSizesArray + ptr.srcInfosArray = srcInfosArray + ptr.srcInfosCount = srcInfosCount + ptr.addressResolutionFlags = addressResolutionFlags + ref[] end -struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitivesGeneratedQuery::VkBool32 - primitivesGeneratedQueryWithRasterizerDiscard::VkBool32 - primitivesGeneratedQueryWithNonZeroStreams::VkBool32 +struct VkStridedDeviceAddressNV + startAddress::VkDeviceAddress + strideInBytes::VkDeviceSize end -const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR +struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + data::NTuple{4, UInt8} +end -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol) + f === :geometryIndex && return (Ptr{UInt32}(x + 0), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 0), 24, 5) + f === :geometryFlags && return (Ptr{UInt32}(x + 0), 29, 3) + return getfield(x, f) +end -struct VkPhysicalDeviceImageViewMinLodFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -struct VkImageViewMinLodCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minLod::Cfloat +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -struct VkPhysicalDeviceMultiDrawFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - multiDraw::VkBool32 +function Base.propertynames(x::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, private::Bool = false) + (:geometryIndex, :reserved, :geometryFlags, if private + fieldnames(typeof(x)) + else + () + end...) end -struct VkPhysicalDeviceMultiDrawPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxMultiDrawCount::UInt32 +function VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV(geometryIndex::UInt32, reserved::UInt32, geometryFlags::UInt32) + ref = Ref{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}, ref) + ptr.geometryIndex = geometryIndex + ptr.reserved = reserved + ptr.geometryFlags = geometryFlags + ref[] end -struct VkMultiDrawInfoEXT - firstVertex::UInt32 - vertexCount::UInt32 +struct VkClusterAccelerationStructureMoveObjectsInfoNV + srcAccelerationStructure::VkDeviceAddress end -struct VkMultiDrawIndexedInfoEXT - firstIndex::UInt32 - indexCount::UInt32 - vertexOffset::Int32 +struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV + clusterReferencesCount::UInt32 + clusterReferencesStride::UInt32 + clusterReferences::VkDeviceAddress end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawInfoEXT * pVertexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride ) -const PFN_vkCmdDrawMultiEXT = Ptr{Cvoid} +struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMultiIndexedEXT ) ( VkCommandBuffer commandBuffer , uint32_t drawCount , const VkMultiDrawIndexedInfoEXT * pIndexInfo , uint32_t instanceCount , uint32_t firstInstance , uint32_t stride , const int32_t * pVertexOffset ) -const PFN_vkCmdDrawMultiIndexedEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + return getfield(x, f) +end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) - ccall((:vkCmdDrawMultiEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -function vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawInfoEXT}, UInt32, UInt32, UInt32), commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride) +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) - ccall((:vkCmdDrawMultiIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ref[] end -function vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMultiDrawIndexedInfoEXT}, UInt32, UInt32, UInt32, Ptr{Int32}), commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset) +struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + data::NTuple{72, UInt8} +end + +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol) + f === :clusterID && return Ptr{UInt32}(x + 0) + f === :clusterFlags && return Ptr{VkClusterAccelerationStructureClusterFlagsNV}(x + 4) + f === :triangleCount && return (Ptr{UInt32}(x + 8), 0, 9) + f === :vertexCount && return (Ptr{UInt32}(x + 8), 9, 9) + f === :positionTruncateBitCount && return (Ptr{UInt32}(x + 8), 18, 6) + f === :indexType && return (Ptr{UInt32}(x + 8), 24, 4) + f === :opacityMicromapIndexType && return (Ptr{UInt32}(x + 8), 28, 4) + f === :baseGeometryIndexAndGeometryFlags && return Ptr{VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV}(x + 12) + f === :indexBufferStride && return Ptr{UInt16}(x + 16) + f === :vertexBufferStride && return Ptr{UInt16}(x + 18) + f === :geometryIndexAndFlagsBufferStride && return Ptr{UInt16}(x + 20) + f === :opacityMicromapIndexBufferStride && return Ptr{UInt16}(x + 22) + f === :indexBuffer && return Ptr{VkDeviceAddress}(x + 24) + f === :vertexBuffer && return Ptr{VkDeviceAddress}(x + 32) + f === :geometryIndexAndFlagsBuffer && return Ptr{VkDeviceAddress}(x + 40) + f === :opacityMicromapArray && return Ptr{VkDeviceAddress}(x + 48) + f === :opacityMicromapIndexBuffer && return Ptr{VkDeviceAddress}(x + 56) + f === :instantiationBoundingBoxLimit && return Ptr{VkDeviceAddress}(x + 64) + return getfield(x, f) end -struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - image2DViewOf3D::VkBool32 - sampler2DViewOf3D::VkBool32 +function Base.getproperty(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -const VkMicromapEXT_T = Cvoid +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end +end -const VkMicromapEXT = Ptr{VkMicromapEXT_T} +function Base.propertynames(x::VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, private::Bool = false) + (:clusterID, :clusterFlags, :triangleCount, :vertexCount, :positionTruncateBitCount, :indexType, :opacityMicromapIndexType, :baseGeometryIndexAndGeometryFlags, :indexBufferStride, :vertexBufferStride, :geometryIndexAndFlagsBufferStride, :opacityMicromapIndexBufferStride, :indexBuffer, :vertexBuffer, :geometryIndexAndFlagsBuffer, :opacityMicromapArray, :opacityMicromapIndexBuffer, :instantiationBoundingBoxLimit, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV(clusterID::UInt32, clusterFlags::VkClusterAccelerationStructureClusterFlagsNV, triangleCount::UInt32, vertexCount::UInt32, positionTruncateBitCount::UInt32, indexType::UInt32, opacityMicromapIndexType::UInt32, baseGeometryIndexAndGeometryFlags::VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, indexBufferStride::UInt16, vertexBufferStride::UInt16, geometryIndexAndFlagsBufferStride::UInt16, opacityMicromapIndexBufferStride::UInt16, indexBuffer::VkDeviceAddress, vertexBuffer::VkDeviceAddress, geometryIndexAndFlagsBuffer::VkDeviceAddress, opacityMicromapArray::VkDeviceAddress, opacityMicromapIndexBuffer::VkDeviceAddress, instantiationBoundingBoxLimit::VkDeviceAddress) + ref = Ref{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV}, ref) + ptr.clusterID = clusterID + ptr.clusterFlags = clusterFlags + ptr.triangleCount = triangleCount + ptr.vertexCount = vertexCount + ptr.positionTruncateBitCount = positionTruncateBitCount + ptr.indexType = indexType + ptr.opacityMicromapIndexType = opacityMicromapIndexType + ptr.baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags + ptr.indexBufferStride = indexBufferStride + ptr.vertexBufferStride = vertexBufferStride + ptr.geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride + ptr.opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride + ptr.indexBuffer = indexBuffer + ptr.vertexBuffer = vertexBuffer + ptr.geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer + ptr.opacityMicromapArray = opacityMicromapArray + ptr.opacityMicromapIndexBuffer = opacityMicromapIndexBuffer + ptr.instantiationBoundingBoxLimit = instantiationBoundingBoxLimit + ref[] +end -@cenum VkMicromapTypeEXT::UInt32 begin - VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0 - VK_MICROMAP_TYPE_MAX_ENUM_EXT = 2147483647 +struct VkClusterAccelerationStructureInstantiateClusterInfoNV + data::NTuple{32, UInt8} end -@cenum VkBuildMicromapModeEXT::UInt32 begin - VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0 - VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol) + f === :clusterIdOffset && return Ptr{UInt32}(x + 0) + f === :geometryIndexOffset && return (Ptr{UInt32}(x + 4), 0, 24) + f === :reserved && return (Ptr{UInt32}(x + 4), 24, 8) + f === :clusterTemplateAddress && return Ptr{VkDeviceAddress}(x + 8) + f === :vertexBuffer && return Ptr{VkStridedDeviceAddressNV}(x + 16) + return getfield(x, f) end -@cenum VkCopyMicromapModeEXT::UInt32 begin - VK_COPY_MICROMAP_MODE_CLONE_EXT = 0 - VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1 - VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2 - VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3 - VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 2147483647 +function Base.getproperty(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, f::Symbol) + r = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}(x) + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, 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) + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = GC.@preserve(r, unsafe_load(baseptr32)) + if offset + width > 32 + u64 |= GC.@preserve(r, unsafe_load(baseptr32 + 4)) << 32 + end + u64 = u64 >> offset & (1 << width - 1) + return u64 % ty + end + end end -@cenum VkOpacityMicromapFormatEXT::UInt32 begin - VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1 - VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2 - VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 2147483647 +function Base.setproperty!(x::Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, f::Symbol, v) + fptr = getproperty(x, f) + if fptr isa Ptr + unsafe_store!(getproperty(x, f), v) + else + (baseptr, offset, width) = fptr + baseptr32 = convert(Ptr{UInt32}, baseptr) + u64 = unsafe_load(baseptr32) + straddle = offset + width > 32 + if straddle + u64 |= unsafe_load(baseptr32 + 4) << 32 + end + mask = 1 << width - 1 + u64 &= ~(mask << offset) + u64 |= (unsigned(v) & mask) << offset + unsafe_store!(baseptr32, u64 & typemax(UInt32)) + if straddle + unsafe_store!(baseptr32 + 4, u64 >> 32) + end + end end -@cenum VkOpacityMicromapSpecialIndexEXT::Int32 begin - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4 - VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 2147483647 +function Base.propertynames(x::VkClusterAccelerationStructureInstantiateClusterInfoNV, private::Bool = false) + (:clusterIdOffset, :geometryIndexOffset, :reserved, :clusterTemplateAddress, :vertexBuffer, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkClusterAccelerationStructureInstantiateClusterInfoNV(clusterIdOffset::UInt32, geometryIndexOffset::UInt32, reserved::UInt32, clusterTemplateAddress::VkDeviceAddress, vertexBuffer::VkStridedDeviceAddressNV) + ref = Ref{VkClusterAccelerationStructureInstantiateClusterInfoNV}() + ptr = Base.unsafe_convert(Ptr{VkClusterAccelerationStructureInstantiateClusterInfoNV}, ref) + ptr.clusterIdOffset = clusterIdOffset + ptr.geometryIndexOffset = geometryIndexOffset + ptr.reserved = reserved + ptr.clusterTemplateAddress = clusterTemplateAddress + ptr.vertexBuffer = vertexBuffer + ref[] end -@cenum VkAccelerationStructureCompatibilityKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1 - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647 +struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV + clusterTemplateAddress::VkDeviceAddress end -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - 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 +struct VkAccelerationStructureBuildSizesInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureSize::VkDeviceSize + updateScratchSize::VkDeviceSize + buildScratchSize::VkDeviceSize end -@cenum VkBuildMicromapFlagBitsEXT::UInt32 begin - VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 1 - VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 2 - VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 4 - VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + allowClusterAccelerationStructure::VkBool32 end -const VkBuildMicromapFlagsEXT = VkFlags - -@cenum VkMicromapCreateFlagBitsEXT::UInt32 begin - VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 1 - VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkGetClusterAccelerationStructureBuildSizesNV +const PFN_vkGetClusterAccelerationStructureBuildSizesNV = Ptr{Cvoid} -const VkMicromapCreateFlagsEXT = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildClusterAccelerationStructureIndirectNV +const PFN_vkCmdBuildClusterAccelerationStructureIndirectNV = Ptr{Cvoid} -struct VkMicromapUsageEXT - count::UInt32 - subdivisionLevel::UInt32 - format::UInt32 +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetClusterAccelerationStructureBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} +function vkGetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkClusterAccelerationStructureInputInfoNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) end -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos) + ccall((:vkCmdBuildClusterAccelerationStructureIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkCmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkClusterAccelerationStructureCommandsInfoNV}), commandBuffer, pCommandInfos) end -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +@cenum VkPartitionedAccelerationStructureOpTypeNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 2147483647 end -const __U_VkDeviceOrHostAddressKHR = Union{VkDeviceAddress, Ptr{Cvoid}} - -function VkDeviceOrHostAddressKHR(val::__U_VkDeviceOrHostAddressKHR) - ref = Ref{VkDeviceOrHostAddressKHR}() - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, ref) - if val isa VkDeviceAddress - ptr.deviceAddress = val - elseif val isa Ptr{Cvoid} - ptr.hostAddress = val - end - ref[] +@cenum VkPartitionedAccelerationStructureInstanceFlagBitsNV::UInt32 begin + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 1 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 2 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 4 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 16 + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 2147483647 end -struct VkMicromapBuildInfoEXT +const VkPartitionedAccelerationStructureInstanceFlagsNV = VkFlags + +struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - type::VkMicromapTypeEXT - flags::VkBuildMicromapFlagsEXT - mode::VkBuildMicromapModeEXT - dstMicromap::VkMicromapEXT - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - data::VkDeviceOrHostAddressConstKHR - scratchData::VkDeviceOrHostAddressKHR - triangleArray::VkDeviceOrHostAddressConstKHR - triangleArrayStride::VkDeviceSize + partitionedAccelerationStructure::VkBool32 end -struct VkMicromapCreateInfoEXT +struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - createFlags::VkMicromapCreateFlagsEXT - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkMicromapTypeEXT - deviceAddress::VkDeviceAddress + maxPartitionCount::UInt32 end -struct VkPhysicalDeviceOpacityMicromapFeaturesEXT +struct VkPartitionedAccelerationStructureFlagsNV sType::VkStructureType pNext::Ptr{Cvoid} - micromap::VkBool32 - micromapCaptureReplay::VkBool32 - micromapHostCommands::VkBool32 + enablePartitionTranslation::VkBool32 end -struct VkPhysicalDeviceOpacityMicromapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxOpacity2StateSubdivisionLevel::UInt32 - maxOpacity4StateSubdivisionLevel::UInt32 +struct VkBuildPartitionedAccelerationStructureIndirectCommandNV + opType::VkPartitionedAccelerationStructureOpTypeNV + argCount::UInt32 + argData::VkStridedDeviceAddressNV end -struct VkMicromapVersionInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} +struct VkPartitionedAccelerationStructureWriteInstanceDataNV + transform::VkTransformMatrixKHR + explicitAABB::NTuple{6, Cfloat} + instanceID::UInt32 + instanceMask::UInt32 + instanceContributionToHitGroupIndex::UInt32 + instanceFlags::VkPartitionedAccelerationStructureInstanceFlagsNV + instanceIndex::UInt32 + partitionIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkCopyMicromapToMemoryInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT +struct VkPartitionedAccelerationStructureUpdateInstanceDataNV + instanceIndex::UInt32 + instanceContributionToHitGroupIndex::UInt32 + accelerationStructure::VkDeviceAddress end -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT +struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV + partitionIndex::UInt32 + partitionTranslation::NTuple{3, Cfloat} end -struct VkCopyMicromapInfoEXT +struct VkWriteDescriptorSetPartitionedAccelerationStructureNV sType::VkStructureType pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkDeviceAddress} end -struct VkMicromapBuildSizesInfoEXT +struct VkPartitionedAccelerationStructureInstancesInputNV sType::VkStructureType pNext::Ptr{Cvoid} - micromapSize::VkDeviceSize - buildScratchSize::VkDeviceSize - discardable::VkBool32 + flags::VkBuildAccelerationStructureFlagsKHR + instanceCount::UInt32 + maxInstancePerPartitionCount::UInt32 + partitionCount::UInt32 + maxInstanceInGlobalPartitionCount::UInt32 end -struct VkAccelerationStructureTrianglesOpacityMicromapEXT +struct VkBuildPartitionedAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - indexType::VkIndexType - indexBuffer::VkDeviceOrHostAddressConstKHR - indexStride::VkDeviceSize - baseTriangle::UInt32 - usageCountsCount::UInt32 - pUsageCounts::Ptr{VkMicromapUsageEXT} - ppUsageCounts::Ptr{Ptr{VkMicromapUsageEXT}} - micromap::VkMicromapEXT + input::VkPartitionedAccelerationStructureInstancesInputNV + srcAccelerationStructureData::VkDeviceAddress + dstAccelerationStructureData::VkDeviceAddress + scratchData::VkDeviceAddress + srcInfos::VkDeviceAddress + srcInfosCount::VkDeviceAddress end -struct VkMicromapTriangleEXT - dataOffset::UInt32 - subdivisionLevel::UInt16 - format::UInt16 -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMicromapEXT ) ( VkDevice device , const VkMicromapCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkMicromapEXT * pMicromap ) -const PFN_vkCreateMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyMicromapEXT ) ( VkDevice device , VkMicromapEXT micromap , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyMicromapEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildMicromapsEXT ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkCmdBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildMicromapsEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkMicromapBuildInfoEXT * pInfos ) -const PFN_vkBuildMicromapsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCopyMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMicromapToMemoryEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCopyMicromapToMemoryEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToMicromapEXT ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCopyMemoryToMicromapEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteMicromapsPropertiesEXT ) ( VkDevice device , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteMicromapsPropertiesEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV +const PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildPartitionedAccelerationStructuresNV +const PFN_vkCmdBuildPartitionedAccelerationStructuresNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMicromapToMemoryEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMicromapToMemoryInfoEXT * pInfo ) -const PFN_vkCmdCopyMicromapToMemoryEXT = Ptr{Cvoid} +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo) + ccall((:vkGetPartitionedAccelerationStructuresBuildSizesNV, libvulkan), Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToMicromapEXT ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToMicromapInfoEXT * pInfo ) -const PFN_vkCmdCopyMemoryToMicromapEXT = Ptr{Cvoid} +function vkGetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkPartitionedAccelerationStructureInstancesInputNV}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, pInfo, pSizeInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteMicromapsPropertiesEXT ) ( VkCommandBuffer commandBuffer , uint32_t micromapCount , const VkMicromapEXT * pMicromaps , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteMicromapsPropertiesEXT = Ptr{Cvoid} +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo) + ccall((:vkCmdBuildPartitionedAccelerationStructuresNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMicromapCompatibilityEXT ) ( VkDevice device , const VkMicromapVersionInfoEXT * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceMicromapCompatibilityEXT = Ptr{Cvoid} +function vkCmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkBuildPartitionedAccelerationStructureInfoNV}), commandBuffer, pBuildInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkGetMicromapBuildSizesEXT ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkMicromapBuildInfoEXT * pBuildInfo , VkMicromapBuildSizesInfoEXT * pSizeInfo ) -const PFN_vkGetMicromapBuildSizesEXT = Ptr{Cvoid} +const VkIndirectExecutionSetEXT_T = Cvoid -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap) - ccall((:vkCreateMicromapEXT, libvulkan), VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) -end +const VkIndirectExecutionSetEXT = Ptr{VkIndirectExecutionSetEXT_T} -function vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMicromapCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkMicromapEXT}), device, pCreateInfo, pAllocator, pMicromap) -end +const VkIndirectCommandsLayoutEXT_T = Cvoid -function vkDestroyMicromapEXT(device, micromap, pAllocator) - ccall((:vkDestroyMicromapEXT, libvulkan), Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) -end +const VkIndirectCommandsLayoutEXT = Ptr{VkIndirectCommandsLayoutEXT_T} -function vkDestroyMicromapEXT(device, micromap, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkMicromapEXT, Ptr{VkAllocationCallbacks}), device, micromap, pAllocator) +@cenum VkIndirectExecutionSetInfoTypeEXT::UInt32 begin + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1 + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos) - ccall((:vkCmdBuildMicromapsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +@cenum VkIndirectCommandsTokenTypeEXT::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 2147483647 end -function vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapBuildInfoEXT}), commandBuffer, infoCount, pInfos) +@cenum VkIndirectCommandsInputModeFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 1 + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 2 + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos) - ccall((:vkBuildMicromapsEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) -end +const VkIndirectCommandsInputModeFlagsEXT = VkFlags -function vkBuildMicromapsEXT(device, deferredOperation, infoCount, pInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkMicromapBuildInfoEXT}), device, deferredOperation, infoCount, pInfos) +@cenum VkIndirectCommandsLayoutUsageFlagBitsEXT::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -function vkCopyMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) -end +const VkIndirectCommandsLayoutUsageFlagsEXT = VkFlags -function vkCopyMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 + dynamicGeneratedPipelineLayout::VkBool32 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMicromapToMemoryEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxIndirectPipelineCount::UInt32 + maxIndirectShaderObjectCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsIndirectStride::UInt32 + supportedIndirectCommandsInputModes::VkIndirectCommandsInputModeFlagsEXT + supportedIndirectCommandsShaderStages::VkShaderStageFlags + supportedIndirectCommandsShaderStagesPipelineBinding::VkShaderStageFlags + supportedIndirectCommandsShaderStagesShaderBinding::VkShaderStageFlags + deviceGeneratedCommandsTransformFeedback::VkBool32 + deviceGeneratedCommandsMultiDrawIndirectCount::VkBool32 end -function vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMicromapToMemoryInfoEXT}), device, deferredOperation, pInfo) +struct VkGeneratedCommandsMemoryRequirementsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + maxSequenceCount::UInt32 + maxDrawCount::UInt32 end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToMicromapEXT, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectExecutionSetPipelineInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + initialPipeline::VkPipeline + maxPipelineCount::UInt32 end -function vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToMicromapInfoEXT}), device, deferredOperation, pInfo) +struct VkIndirectExecutionSetShaderLayoutInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) - ccall((:vkWriteMicromapsPropertiesEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +struct VkIndirectExecutionSetShaderInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCount::UInt32 + pInitialShaders::Ptr{VkShaderEXT} + pSetLayoutInfos::Ptr{VkIndirectExecutionSetShaderLayoutInfoEXT} + maxShaderCount::UInt32 + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} end -function vkWriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkMicromapEXT}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, micromapCount, pMicromaps, queryType, dataSize, pData, stride) +struct VkIndirectExecutionSetInfoEXT + data::NTuple{8, UInt8} end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol) + f === :pPipelineInfo && return Ptr{Ptr{VkIndirectExecutionSetPipelineInfoEXT}}(x + 0) + f === :pShaderInfo && return Ptr{Ptr{VkIndirectExecutionSetShaderInfoEXT}}(x + 0) + return getfield(x, f) end -function vkCmdCopyMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapInfoEXT}), commandBuffer, pInfo) +function Base.getproperty(x::VkIndirectExecutionSetInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMicromapToMemoryEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMicromapToMemoryInfoEXT}), commandBuffer, pInfo) +function Base.propertynames(x::VkIndirectExecutionSetInfoEXT, private::Bool = false) + (:pPipelineInfo, :pShaderInfo, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToMicromapEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) -end +const __U_VkIndirectExecutionSetInfoEXT = Union{Ptr{VkIndirectExecutionSetPipelineInfoEXT}, Ptr{VkIndirectExecutionSetShaderInfoEXT}} -function vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToMicromapInfoEXT}), commandBuffer, pInfo) +function VkIndirectExecutionSetInfoEXT(val::__U_VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetInfoEXT}, ref) + if val isa Ptr{VkIndirectExecutionSetPipelineInfoEXT} + ptr.pPipelineInfo = val + elseif val isa Ptr{VkIndirectExecutionSetShaderInfoEXT} + ptr.pShaderInfo = val + end + ref[] end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteMicromapsPropertiesEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +struct VkIndirectExecutionSetCreateInfoEXT + data::NTuple{32, UInt8} end -function vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkMicromapEXT}, VkQueryType, VkQueryPool, UInt32), commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery) +function Base.getproperty(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectExecutionSetInfoTypeEXT}(x + 16) + f === :info && return Ptr{VkIndirectExecutionSetInfoEXT}(x + 24) + return getfield(x, f) end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceMicromapCompatibilityEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +function Base.getproperty(x::VkIndirectExecutionSetCreateInfoEXT, f::Symbol) + r = Ref{VkIndirectExecutionSetCreateInfoEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkMicromapVersionInfoEXT}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) +function Base.setproperty!(x::Ptr{VkIndirectExecutionSetCreateInfoEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo) - ccall((:vkGetMicromapBuildSizesEXT, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function Base.propertynames(x::VkIndirectExecutionSetCreateInfoEXT, private::Bool = false) + (:sType, :pNext, :type, :info, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkMicromapBuildInfoEXT}, Ptr{VkMicromapBuildSizesInfoEXT}), device, buildType, pBuildInfo, pSizeInfo) +function VkIndirectExecutionSetCreateInfoEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectExecutionSetInfoTypeEXT, info::VkIndirectExecutionSetInfoEXT) + ref = Ref{VkIndirectExecutionSetCreateInfoEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectExecutionSetCreateInfoEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.info = info + ref[] end -struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI +struct VkGeneratedCommandsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - clustercullingShader::VkBool32 - multiviewClusterCullingShader::VkBool32 + shaderStages::VkShaderStageFlags + indirectExecutionSet::VkIndirectExecutionSetEXT + indirectCommandsLayout::VkIndirectCommandsLayoutEXT + indirectAddress::VkDeviceAddress + indirectAddressSize::VkDeviceSize + preprocessAddress::VkDeviceAddress + preprocessSize::VkDeviceSize + maxSequenceCount::UInt32 + sequenceCountAddress::VkDeviceAddress + maxDrawCount::UInt32 end -struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI +struct VkWriteIndirectExecutionSetPipelineEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxWorkGroupCount::NTuple{3, UInt32} - maxWorkGroupSize::NTuple{3, UInt32} - maxOutputClusterCount::UInt32 + index::UInt32 + pipeline::VkPipeline end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterHUAWEI ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawClusterHUAWEI = Ptr{Cvoid} +struct VkIndirectCommandsPushConstantTokenEXT + updateRange::VkPushConstantRange +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawClusterIndirectHUAWEI ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDrawClusterIndirectHUAWEI = Ptr{Cvoid} +struct VkIndirectCommandsVertexBufferTokenEXT + vertexBindingUnit::UInt32 +end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawClusterHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkIndirectCommandsIndexBufferTokenEXT + mode::VkIndirectCommandsInputModeFlagBitsEXT end -function vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +struct VkIndirectCommandsExecutionSetTokenEXT + type::VkIndirectExecutionSetInfoTypeEXT + shaderStages::VkShaderStageFlags end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset) - ccall((:vkCmdDrawClusterIndirectHUAWEI, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +struct VkIndirectCommandsTokenDataEXT + data::NTuple{8, UInt8} end -function vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +function Base.getproperty(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol) + f === :pPushConstant && return Ptr{Ptr{VkIndirectCommandsPushConstantTokenEXT}}(x + 0) + f === :pVertexBuffer && return Ptr{Ptr{VkIndirectCommandsVertexBufferTokenEXT}}(x + 0) + f === :pIndexBuffer && return Ptr{Ptr{VkIndirectCommandsIndexBufferTokenEXT}}(x + 0) + f === :pExecutionSet && return Ptr{Ptr{VkIndirectCommandsExecutionSetTokenEXT}}(x + 0) + return getfield(x, f) end -struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - borderColorSwizzle::VkBool32 - borderColorSwizzleFromImage::VkBool32 +function Base.getproperty(x::VkIndirectCommandsTokenDataEXT, f::Symbol) + r = Ref{VkIndirectCommandsTokenDataEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkSamplerBorderColorComponentMappingCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - components::VkComponentMapping - srgb::VkBool32 +function Base.setproperty!(x::Ptr{VkIndirectCommandsTokenDataEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pageableDeviceLocalMemory::VkBool32 +function Base.propertynames(x::VkIndirectCommandsTokenDataEXT, private::Bool = false) + (:pPushConstant, :pVertexBuffer, :pIndexBuffer, :pExecutionSet, if private + fieldnames(typeof(x)) + else + () + end...) +end + +const __U_VkIndirectCommandsTokenDataEXT = Union{Ptr{VkIndirectCommandsPushConstantTokenEXT}, Ptr{VkIndirectCommandsVertexBufferTokenEXT}, Ptr{VkIndirectCommandsIndexBufferTokenEXT}, Ptr{VkIndirectCommandsExecutionSetTokenEXT}} + +function VkIndirectCommandsTokenDataEXT(val::__U_VkIndirectCommandsTokenDataEXT) + ref = Ref{VkIndirectCommandsTokenDataEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsTokenDataEXT}, ref) + if val isa Ptr{VkIndirectCommandsPushConstantTokenEXT} + ptr.pPushConstant = val + elseif val isa Ptr{VkIndirectCommandsVertexBufferTokenEXT} + ptr.pVertexBuffer = val + elseif val isa Ptr{VkIndirectCommandsIndexBufferTokenEXT} + ptr.pIndexBuffer = val + elseif val isa Ptr{VkIndirectCommandsExecutionSetTokenEXT} + ptr.pExecutionSet = val + end + ref[] end -# typedef void ( VKAPI_PTR * PFN_vkSetDeviceMemoryPriorityEXT ) ( VkDevice device , VkDeviceMemory memory , float priority ) -const PFN_vkSetDeviceMemoryPriorityEXT = Ptr{Cvoid} +struct VkIndirectCommandsLayoutTokenEXT + data::NTuple{40, UInt8} +end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority) - ccall((:vkSetDeviceMemoryPriorityEXT, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function Base.getproperty(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkIndirectCommandsTokenTypeEXT}(x + 16) + f === :data && return Ptr{VkIndirectCommandsTokenDataEXT}(x + 24) + f === :offset && return Ptr{UInt32}(x + 32) + return getfield(x, f) end -function vkSetDeviceMemoryPriorityEXT(device, memory, priority, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDeviceMemory, Cfloat), device, memory, priority) +function Base.getproperty(x::VkIndirectCommandsLayoutTokenEXT, f::Symbol) + r = Ref{VkIndirectCommandsLayoutTokenEXT}(x) + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetHostMapping::VkBool32 +function Base.setproperty!(x::Ptr{VkIndirectCommandsLayoutTokenEXT}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkDescriptorSetBindingReferenceVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetLayout::VkDescriptorSetLayout - binding::UInt32 +function Base.propertynames(x::VkIndirectCommandsLayoutTokenEXT, private::Bool = false) + (:sType, :pNext, :type, :data, :offset, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkIndirectCommandsLayoutTokenEXT(sType::VkStructureType, pNext::Ptr{Cvoid}, type::VkIndirectCommandsTokenTypeEXT, data::VkIndirectCommandsTokenDataEXT, offset::UInt32) + ref = Ref{VkIndirectCommandsLayoutTokenEXT}() + ptr = Base.unsafe_convert(Ptr{VkIndirectCommandsLayoutTokenEXT}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.data = data + ptr.offset = offset + ref[] end -struct VkDescriptorSetLayoutHostMappingInfoVALVE +struct VkIndirectCommandsLayoutCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorOffset::Csize_t - descriptorSize::UInt32 -end - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE ) ( VkDevice device , const VkDescriptorSetBindingReferenceVALVE * pBindingReference , VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) -const PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetHostMappingVALVE ) ( VkDevice device , VkDescriptorSet descriptorSet , void * * ppData ) -const PFN_vkGetDescriptorSetHostMappingVALVE = Ptr{Cvoid} - -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping) - ccall((:vkGetDescriptorSetLayoutHostMappingInfoVALVE, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) + flags::VkIndirectCommandsLayoutUsageFlagsEXT + shaderStages::VkShaderStageFlags + indirectStride::UInt32 + pipelineLayout::VkPipelineLayout + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenEXT} end -function vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetBindingReferenceVALVE}, Ptr{VkDescriptorSetLayoutHostMappingInfoVALVE}), device, pBindingReference, pHostMapping) +struct VkDrawIndirectCountIndirectCommandEXT + bufferAddress::VkDeviceAddress + stride::UInt32 + commandCount::UInt32 end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData) - ccall((:vkGetDescriptorSetHostMappingVALVE, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +struct VkBindVertexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 end -function vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, fptr) - ccall(fptr, Cvoid, (VkDevice, VkDescriptorSet, Ptr{Ptr{Cvoid}}), device, descriptorSet, ppData) +struct VkBindIndexBufferIndirectCommandEXT + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT +struct VkGeneratedCommandsPipelineInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 + pipeline::VkPipeline end -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT +struct VkGeneratedCommandsShaderInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 + shaderCount::UInt32 + pShaders::Ptr{VkShaderEXT} end -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM +struct VkWriteIndirectExecutionSetShaderEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 + index::UInt32 + shader::VkShaderEXT end -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D -end +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsEXT +const PFN_vkGetGeneratedCommandsMemoryRequirementsEXT = Ptr{Cvoid} -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetCount::UInt32 - pFragmentDensityOffsets::Ptr{VkOffset2D} -end +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsEXT +const PFN_vkCmdPreprocessGeneratedCommandsEXT = Ptr{Cvoid} -struct VkCopyMemoryIndirectCommandNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - size::VkDeviceSize -end +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsEXT +const PFN_vkCmdExecuteGeneratedCommandsEXT = Ptr{Cvoid} -struct VkCopyMemoryToImageIndirectCommandNV - srcAddress::VkDeviceAddress - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutEXT +const PFN_vkCreateIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutEXT +const PFN_vkDestroyIndirectCommandsLayoutEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectExecutionSetEXT +const PFN_vkCreateIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectExecutionSetEXT +const PFN_vkDestroyIndirectExecutionSetEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetPipelineEXT +const PFN_vkUpdateIndirectExecutionSetPipelineEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateIndirectExecutionSetShaderEXT +const PFN_vkUpdateIndirectExecutionSetShaderEXT = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - indirectCopy::VkBool32 +function vkGetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoEXT}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedQueues::VkQueueFlags +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) + ccall((:vkCmdPreprocessGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride ) -const PFN_vkCmdCopyMemoryIndirectNV = Ptr{Cvoid} +function vkCmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoEXT}, VkCommandBuffer), commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToImageIndirectNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress copyBufferAddress , uint32_t copyCount , uint32_t stride , VkImage dstImage , VkImageLayout dstImageLayout , const VkImageSubresourceLayers * pImageSubresources ) -const PFN_vkCmdCopyMemoryToImageIndirectNV = Ptr{Cvoid} +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride) - ccall((:vkCmdCopyMemoryIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +function vkCmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoEXT}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -function vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32), commandBuffer, copyBufferAddress, copyCount, stride) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) - ccall((:vkCmdCopyMemoryToImageIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function vkCreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutEXT}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -function vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, UInt32, UInt32, VkImage, VkImageLayout, Ptr{VkImageSubresourceLayers}), commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources) +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutEXT, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -const VkMemoryDecompressionMethodFlagBitsNV = VkFlags64 +function vkDestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutEXT, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end -const VkMemoryDecompressionMethodFlagsNV = VkFlags64 +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet) + ccall((:vkCreateIndirectExecutionSetEXT, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) +end -struct VkDecompressMemoryRegionNV - srcAddress::VkDeviceAddress - dstAddress::VkDeviceAddress - compressedSize::VkDeviceSize - decompressedSize::VkDeviceSize - decompressionMethod::VkMemoryDecompressionMethodFlagsNV +function vkCreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkIndirectExecutionSetCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectExecutionSetEXT}), device, pCreateInfo, pAllocator, pIndirectExecutionSet) end -struct VkPhysicalDeviceMemoryDecompressionFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryDecompression::VkBool32 +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator) + ccall((:vkDestroyIndirectExecutionSetEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -struct VkPhysicalDeviceMemoryDecompressionPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - decompressionMethods::VkMemoryDecompressionMethodFlagsNV - maxDecompressionIndirectCount::UInt64 +function vkDestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, Ptr{VkAllocationCallbacks}), device, indirectExecutionSet, pAllocator) end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryNV ) ( VkCommandBuffer commandBuffer , uint32_t decompressRegionCount , const VkDecompressMemoryRegionNV * pDecompressMemoryRegions ) -const PFN_vkCmdDecompressMemoryNV = Ptr{Cvoid} +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetPipelineEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdDecompressMemoryIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkDeviceAddress indirectCommandsAddress , VkDeviceAddress indirectCommandsCountAddress , uint32_t stride ) -const PFN_vkCmdDecompressMemoryIndirectCountNV = Ptr{Cvoid} +function vkUpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetPipelineEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) +end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions) - ccall((:vkCmdDecompressMemoryNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) + ccall((:vkUpdateIndirectExecutionSetShaderEXT, libvulkan), Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkDecompressMemoryRegionNV}), commandBuffer, decompressRegionCount, pDecompressMemoryRegions) +function vkUpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites, fptr) + ccall(fptr, Cvoid, (VkDevice, VkIndirectExecutionSetEXT, UInt32, Ptr{VkWriteIndirectExecutionSetShaderEXT}), device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites) end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) - ccall((:vkCmdDecompressMemoryIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + imageAlignmentControl::VkBool32 end -function vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, UInt32), commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride) +struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedImageAlignmentMask::UInt32 end -struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV +struct VkImageAlignmentControlCreateInfoMESA sType::VkStructureType pNext::Ptr{Cvoid} - linearColorAttachment::VkBool32 + maximumRequestedAlignment::UInt32 end -struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT +struct VkPhysicalDeviceDepthClampControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imageCompressionControlSwapchain::VkBool32 + depthClampControl::VkBool32 end -struct VkImageViewSampleWeightCreateInfoQCOM +struct VkPipelineViewportDepthClampControlCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - filterCenter::VkOffset2D - filterSize::VkExtent2D - numPhases::UInt32 + depthClampMode::VkDepthClampModeEXT + pDepthClampRange::Ptr{VkDepthClampRangeEXT} end -struct VkPhysicalDeviceImageProcessingFeaturesQCOM +struct VkPhysicalDeviceHdrVividFeaturesHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - textureSampleWeighted::VkBool32 - textureBoxFilter::VkBool32 - textureBlockMatch::VkBool32 + hdrVivid::VkBool32 end -struct VkPhysicalDeviceImageProcessingPropertiesQCOM +struct VkHdrVividDynamicMetadataHUAWEI sType::VkStructureType pNext::Ptr{Cvoid} - maxWeightFilterPhases::UInt32 - maxWeightFilterDimension::VkExtent2D - maxBlockMatchRegion::VkExtent2D - maxBoxFilterBlockSize::VkExtent2D + dynamicMetadataSize::Csize_t + pDynamicMetadata::Ptr{Cvoid} end -struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT +struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - extendedDynamicState3TessellationDomainOrigin::VkBool32 - extendedDynamicState3DepthClampEnable::VkBool32 - extendedDynamicState3PolygonMode::VkBool32 - extendedDynamicState3RasterizationSamples::VkBool32 - extendedDynamicState3SampleMask::VkBool32 - extendedDynamicState3AlphaToCoverageEnable::VkBool32 - extendedDynamicState3AlphaToOneEnable::VkBool32 - extendedDynamicState3LogicOpEnable::VkBool32 - extendedDynamicState3ColorBlendEnable::VkBool32 - extendedDynamicState3ColorBlendEquation::VkBool32 - extendedDynamicState3ColorWriteMask::VkBool32 - extendedDynamicState3RasterizationStream::VkBool32 - extendedDynamicState3ConservativeRasterizationMode::VkBool32 - extendedDynamicState3ExtraPrimitiveOverestimationSize::VkBool32 - extendedDynamicState3DepthClipEnable::VkBool32 - extendedDynamicState3SampleLocationsEnable::VkBool32 - extendedDynamicState3ColorBlendAdvanced::VkBool32 - extendedDynamicState3ProvokingVertexMode::VkBool32 - extendedDynamicState3LineRasterizationMode::VkBool32 - extendedDynamicState3LineStippleEnable::VkBool32 - extendedDynamicState3DepthClipNegativeOneToOne::VkBool32 - extendedDynamicState3ViewportWScalingEnable::VkBool32 - extendedDynamicState3ViewportSwizzle::VkBool32 - extendedDynamicState3CoverageToColorEnable::VkBool32 - extendedDynamicState3CoverageToColorLocation::VkBool32 - extendedDynamicState3CoverageModulationMode::VkBool32 - extendedDynamicState3CoverageModulationTableEnable::VkBool32 - extendedDynamicState3CoverageModulationTable::VkBool32 - extendedDynamicState3CoverageReductionMode::VkBool32 - extendedDynamicState3RepresentativeFragmentTestEnable::VkBool32 - extendedDynamicState3ShadingRateImageEnable::VkBool32 + MGranularity::UInt32 + NGranularity::UInt32 + KGranularity::UInt32 + AType::VkComponentTypeKHR + BType::VkComponentTypeKHR + CType::VkComponentTypeKHR + ResultType::VkComponentTypeKHR + saturatingAccumulation::VkBool32 + scope::VkScopeKHR + workgroupInvocations::UInt32 end -struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT +struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - dynamicPrimitiveTopologyUnrestricted::VkBool32 + cooperativeMatrixWorkgroupScope::VkBool32 + cooperativeMatrixFlexibleDimensions::VkBool32 + cooperativeMatrixReductions::VkBool32 + cooperativeMatrixConversions::VkBool32 + cooperativeMatrixPerElementOperations::VkBool32 + cooperativeMatrixTensorAddressing::VkBool32 + cooperativeMatrixBlockLoads::VkBool32 end -struct VkColorBlendEquationEXT - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp +struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize::UInt32 + cooperativeMatrixFlexibleDimensionsMaxDimension::UInt32 + cooperativeMatrixWorkgroupScopeReservedSharedMemory::UInt32 end -struct VkColorBlendAdvancedEXT - advancedBlendOp::VkBlendOp - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT - clampResults::VkBool32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV +const PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetTessellationDomainOriginEXT ) ( VkCommandBuffer commandBuffer , VkTessellationDomainOrigin domainOrigin ) -const PFN_vkCmdSetTessellationDomainOriginEXT = Ptr{Cvoid} +function vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixFlexibleDimensionsPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClampEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClampEnable ) -const PFN_vkCmdSetDepthClampEnableEXT = Ptr{Cvoid} +struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineOpacityMicromap::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPolygonModeEXT ) ( VkCommandBuffer commandBuffer , VkPolygonMode polygonMode ) -const PFN_vkCmdSetPolygonModeEXT = Ptr{Cvoid} +struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeRobustness::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationSamplesEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits rasterizationSamples ) -const PFN_vkCmdSetRasterizationSamplesEXT = Ptr{Cvoid} +struct VkPhysicalDeviceFormatPackFeaturesARM + sType::VkStructureType + pNext::Ptr{Cvoid} + formatPack::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleMaskEXT ) ( VkCommandBuffer commandBuffer , VkSampleCountFlagBits samples , const VkSampleMask * pSampleMask ) -const PFN_vkCmdSetSampleMaskEXT = Ptr{Cvoid} +struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapLayered::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToCoverageEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToCoverageEnable ) -const PFN_vkCmdSetAlphaToCoverageEnableEXT = Ptr{Cvoid} +struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetAlphaToOneEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 alphaToOneEnable ) -const PFN_vkCmdSetAlphaToOneEnableEXT = Ptr{Cvoid} +struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE + sType::VkStructureType + pNext::Ptr{Cvoid} + maxFragmentDensityMapLayers::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLogicOpEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 logicOpEnable ) -const PFN_vkCmdSetLogicOpEnableEXT = Ptr{Cvoid} +struct VkSetPresentConfigNV + sType::VkStructureType + pNext::Ptr{Cvoid} + numFramesPerBatch::UInt32 + presentConfigFeedback::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEnableEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkBool32 * pColorBlendEnables ) -const PFN_vkCmdSetColorBlendEnableEXT = Ptr{Cvoid} +struct VkPhysicalDevicePresentMeteringFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMetering::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendEquationEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendEquationEXT * pColorBlendEquations ) -const PFN_vkCmdSetColorBlendEquationEXT = Ptr{Cvoid} +struct VkRenderingEndInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorWriteMaskEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorComponentFlags * pColorWriteMasks ) -const PFN_vkCmdSetColorWriteMaskEXT = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRendering2EXT +const PFN_vkCmdEndRendering2EXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRasterizationStreamEXT ) ( VkCommandBuffer commandBuffer , uint32_t rasterizationStream ) -const PFN_vkCmdSetRasterizationStreamEXT = Ptr{Cvoid} +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo) + ccall((:vkCmdEndRendering2EXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetConservativeRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkConservativeRasterizationModeEXT conservativeRasterizationMode ) -const PFN_vkCmdSetConservativeRasterizationModeEXT = Ptr{Cvoid} +function vkCmdEndRendering2EXT(commandBuffer, pRenderingEndInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderingEndInfoEXT}), commandBuffer, pRenderingEndInfo) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT ) ( VkCommandBuffer commandBuffer , float extraPrimitiveOverestimationSize ) -const PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = Ptr{Cvoid} +struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + zeroInitializeDeviceMemory::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthClipEnable ) -const PFN_vkCmdSetDepthClipEnableEXT = Ptr{Cvoid} +struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCacheIncrementalMode::VkBool32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 sampleLocationsEnable ) -const PFN_vkCmdSetSampleLocationsEnableEXT = Ptr{Cvoid} +@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin + 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 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetColorBlendAdvancedEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstAttachment , uint32_t attachmentCount , const VkColorBlendAdvancedEXT * pColorBlendAdvanced ) -const PFN_vkCmdSetColorBlendAdvancedEXT = Ptr{Cvoid} +@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetProvokingVertexModeEXT ) ( VkCommandBuffer commandBuffer , VkProvokingVertexModeEXT provokingVertexMode ) -const PFN_vkCmdSetProvokingVertexModeEXT = Ptr{Cvoid} +const VkAccelerationStructureCreateFlagsKHR = VkFlags -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineRasterizationModeEXT ) ( VkCommandBuffer commandBuffer , VkLineRasterizationModeEXT lineRasterizationMode ) -const PFN_vkCmdSetLineRasterizationModeEXT = Ptr{Cvoid} +struct VkAccelerationStructureBuildRangeInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stippledLineEnable ) -const PFN_vkCmdSetLineStippleEnableEXT = Ptr{Cvoid} +struct VkAccelerationStructureGeometryTrianglesDataKHR + data::NTuple{64, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthClipNegativeOneToOneEXT ) ( VkCommandBuffer commandBuffer , VkBool32 negativeOneToOne ) -const PFN_vkCmdSetDepthClipNegativeOneToOneEXT = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :vertexFormat && return Ptr{VkFormat}(x + 16) + f === :vertexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + f === :vertexStride && return Ptr{VkDeviceSize}(x + 32) + f === :maxVertex && return Ptr{UInt32}(x + 40) + f === :indexType && return Ptr{VkIndexType}(x + 44) + f === :indexData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 48) + f === :transformData && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 56) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 viewportWScalingEnable ) -const PFN_vkCmdSetViewportWScalingEnableNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryTrianglesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportSwizzleNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportSwizzleNV * pViewportSwizzles ) -const PFN_vkCmdSetViewportSwizzleNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageToColorEnable ) -const PFN_vkCmdSetCoverageToColorEnableNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryTrianglesDataKHR, private::Bool = false) + (:sType, :pNext, :vertexFormat, :vertexData, :vertexStride, :maxVertex, :indexType, :indexData, :transformData, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkAccelerationStructureGeometryTrianglesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, vertexFormat::VkFormat, vertexData::VkDeviceOrHostAddressConstKHR, vertexStride::VkDeviceSize, maxVertex::UInt32, indexType::VkIndexType, indexData::VkDeviceOrHostAddressConstKHR, transformData::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryTrianglesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.vertexFormat = vertexFormat + ptr.vertexData = vertexData + ptr.vertexStride = vertexStride + ptr.maxVertex = maxVertex + ptr.indexType = indexType + ptr.indexData = indexData + ptr.transformData = transformData + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageToColorLocationNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageToColorLocation ) -const PFN_vkCmdSetCoverageToColorLocationNV = Ptr{Cvoid} +struct VkAccelerationStructureGeometryAabbsDataKHR + data::NTuple{32, UInt8} +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageModulationModeNV coverageModulationMode ) -const PFN_vkCmdSetCoverageModulationModeNV = Ptr{Cvoid} +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :stride && return Ptr{VkDeviceSize}(x + 24) + return getfield(x, f) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 coverageModulationTableEnable ) -const PFN_vkCmdSetCoverageModulationTableEnableNV = Ptr{Cvoid} +function Base.getproperty(x::VkAccelerationStructureGeometryAabbsDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryAabbsDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageModulationTableNV ) ( VkCommandBuffer commandBuffer , uint32_t coverageModulationTableCount , const float * pCoverageModulationTable ) -const PFN_vkCmdSetCoverageModulationTableNV = Ptr{Cvoid} +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetShadingRateImageEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 shadingRateImageEnable ) -const PFN_vkCmdSetShadingRateImageEnableNV = Ptr{Cvoid} +function Base.propertynames(x::VkAccelerationStructureGeometryAabbsDataKHR, private::Bool = false) + (:sType, :pNext, :data, :stride, if private + fieldnames(typeof(x)) + else + () + end...) +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRepresentativeFragmentTestEnableNV ) ( VkCommandBuffer commandBuffer , VkBool32 representativeFragmentTestEnable ) -const PFN_vkCmdSetRepresentativeFragmentTestEnableNV = Ptr{Cvoid} +function VkAccelerationStructureGeometryAabbsDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, data::VkDeviceOrHostAddressConstKHR, stride::VkDeviceSize) + ref = Ref{VkAccelerationStructureGeometryAabbsDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryAabbsDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.data = data + ptr.stride = stride + ref[] +end -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoverageReductionModeNV ) ( VkCommandBuffer commandBuffer , VkCoverageReductionModeNV coverageReductionMode ) -const PFN_vkCmdSetCoverageReductionModeNV = Ptr{Cvoid} +struct VkAccelerationStructureGeometryInstancesDataKHR + data::NTuple{32, UInt8} +end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin) - ccall((:vkCmdSetTessellationDomainOriginEXT, libvulkan), Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :arrayOfPointers && return Ptr{VkBool32}(x + 16) + f === :data && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 24) + return getfield(x, f) end -function vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkTessellationDomainOrigin), commandBuffer, domainOrigin) +function Base.getproperty(x::VkAccelerationStructureGeometryInstancesDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryInstancesDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable) - ccall((:vkCmdSetDepthClampEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClampEnable) +function Base.propertynames(x::VkAccelerationStructureGeometryInstancesDataKHR, private::Bool = false) + (:sType, :pNext, :arrayOfPointers, :data, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode) - ccall((:vkCmdSetPolygonModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +function VkAccelerationStructureGeometryInstancesDataKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, arrayOfPointers::VkBool32, data::VkDeviceOrHostAddressConstKHR) + ref = Ref{VkAccelerationStructureGeometryInstancesDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryInstancesDataKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.arrayOfPointers = arrayOfPointers + ptr.data = data + ref[] end -function vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkPolygonMode), commandBuffer, polygonMode) +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples) - ccall((:vkCmdSetRasterizationSamplesEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) end -function vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits), commandBuffer, rasterizationSamples) +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask) - ccall((:vkCmdSetSampleMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkSampleCountFlagBits, Ptr{VkSampleMask}), commandBuffer, samples, pSampleMask) +function Base.propertynames(x::VkAccelerationStructureGeometryDataKHR, private::Bool = false) + (:triangles, :aabbs, :instances, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable) - ccall((:vkCmdSetAlphaToCoverageEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} + +function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) + ref = Ref{VkAccelerationStructureGeometryDataKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) + if val isa VkAccelerationStructureGeometryTrianglesDataKHR + ptr.triangles = val + elseif val isa VkAccelerationStructureGeometryAabbsDataKHR + ptr.aabbs = val + elseif val isa VkAccelerationStructureGeometryInstancesDataKHR + ptr.instances = val + end + ref[] end -function vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToCoverageEnable) +struct VkAccelerationStructureGeometryKHR + data::NTuple{96, UInt8} end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable) - ccall((:vkCmdSetAlphaToOneEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :geometryType && return Ptr{VkGeometryTypeKHR}(x + 16) + f === :geometry && return Ptr{VkAccelerationStructureGeometryDataKHR}(x + 24) + f === :flags && return Ptr{VkGeometryFlagsKHR}(x + 88) + return getfield(x, f) end -function vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, alphaToOneEnable) +function Base.getproperty(x::VkAccelerationStructureGeometryKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable) - ccall((:vkCmdSetLogicOpEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, logicOpEnable) +function Base.propertynames(x::VkAccelerationStructureGeometryKHR, private::Bool = false) + (:sType, :pNext, :geometryType, :geometry, :flags, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) - ccall((:vkCmdSetColorBlendEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +function VkAccelerationStructureGeometryKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, geometryType::VkGeometryTypeKHR, geometry::VkAccelerationStructureGeometryDataKHR, flags::VkGeometryFlagsKHR) + ref = Ref{VkAccelerationStructureGeometryKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.geometryType = geometryType + ptr.geometry = geometry + ptr.flags = flags + ref[] end -function vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBool32}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables) +struct VkAccelerationStructureBuildGeometryInfoKHR + data::NTuple{80, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :type && return Ptr{VkAccelerationStructureTypeKHR}(x + 16) + f === :flags && return Ptr{VkBuildAccelerationStructureFlagsKHR}(x + 20) + f === :mode && return Ptr{VkBuildAccelerationStructureModeKHR}(x + 24) + f === :srcAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 32) + f === :dstAccelerationStructure && return Ptr{VkAccelerationStructureKHR}(x + 40) + f === :geometryCount && return Ptr{UInt32}(x + 48) + f === :pGeometries && return Ptr{Ptr{VkAccelerationStructureGeometryKHR}}(x + 56) + f === :ppGeometries && return Ptr{Ptr{Ptr{VkAccelerationStructureGeometryKHR}}}(x + 64) + f === :scratchData && return Ptr{VkDeviceOrHostAddressKHR}(x + 72) + return getfield(x, f) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) - ccall((:vkCmdSetColorBlendEquationEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function Base.getproperty(x::VkAccelerationStructureBuildGeometryInfoKHR, f::Symbol) + r = Ref{VkAccelerationStructureBuildGeometryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendEquationEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations) +function Base.setproperty!(x::Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) - ccall((:vkCmdSetColorWriteMaskEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function Base.propertynames(x::VkAccelerationStructureBuildGeometryInfoKHR, private::Bool = false) + (:sType, :pNext, :type, :flags, :mode, :srcAccelerationStructure, :dstAccelerationStructure, :geometryCount, :pGeometries, :ppGeometries, :scratchData, if private + fieldnames(typeof(x)) + else + () + end...) end -function vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorComponentFlags}), commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks) +function 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) + ref = Ref{VkAccelerationStructureBuildGeometryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.type = type + ptr.flags = flags + ptr.mode = mode + ptr.srcAccelerationStructure = srcAccelerationStructure + ptr.dstAccelerationStructure = dstAccelerationStructure + ptr.geometryCount = geometryCount + ptr.pGeometries = pGeometries + ptr.ppGeometries = ppGeometries + ptr.scratchData = scratchData + ref[] end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream) - ccall((:vkCmdSetRasterizationStreamEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + createFlags::VkAccelerationStructureCreateFlagsKHR + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize + type::VkAccelerationStructureTypeKHR + deviceAddress::VkDeviceAddress end -function vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, rasterizationStream) +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode) - ccall((:vkCmdSetConservativeRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +struct VkPhysicalDeviceAccelerationStructureFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkBool32 + accelerationStructureCaptureReplay::VkBool32 + accelerationStructureIndirectBuild::VkBool32 + accelerationStructureHostCommands::VkBool32 + descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 end -function vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkConservativeRasterizationModeEXT), commandBuffer, conservativeRasterizationMode) +struct VkPhysicalDeviceAccelerationStructurePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxPerStageDescriptorAccelerationStructures::UInt32 + maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 + maxDescriptorSetAccelerationStructures::UInt32 + maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 + minAccelerationStructureScratchOffsetAlignment::UInt32 end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize) - ccall((:vkCmdSetExtraPrimitiveOverestimationSizeEXT, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR end -function vkCmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, extraPrimitiveOverestimationSize) +struct VkAccelerationStructureVersionInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pVersionData::Ptr{UInt8} end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable) - ccall((:vkCmdSetDepthClipEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +struct VkCopyAccelerationStructureToMemoryInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthClipEnable) +function Base.getproperty(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkAccelerationStructureKHR}(x + 16) + f === :dst && return Ptr{VkDeviceOrHostAddressKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable) - ccall((:vkCmdSetSampleLocationsEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function Base.getproperty(x::VkCopyAccelerationStructureToMemoryInfoKHR, f::Symbol) + r = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, sampleLocationsEnable) +function Base.setproperty!(x::Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) - ccall((:vkCmdSetColorBlendAdvancedEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +function Base.propertynames(x::VkCopyAccelerationStructureToMemoryInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyAccelerationStructureToMemoryInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkAccelerationStructureKHR, dst::VkDeviceOrHostAddressKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyAccelerationStructureToMemoryInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkColorBlendAdvancedEXT}), commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced) +struct VkCopyMemoryToAccelerationStructureInfoKHR + data::NTuple{40, UInt8} end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode) - ccall((:vkCmdSetProvokingVertexModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function Base.getproperty(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol) + f === :sType && return Ptr{VkStructureType}(x + 0) + f === :pNext && return Ptr{Ptr{Cvoid}}(x + 8) + f === :src && return Ptr{VkDeviceOrHostAddressConstKHR}(x + 16) + f === :dst && return Ptr{VkAccelerationStructureKHR}(x + 24) + f === :mode && return Ptr{VkCopyAccelerationStructureModeKHR}(x + 32) + return getfield(x, f) end -function vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkProvokingVertexModeEXT), commandBuffer, provokingVertexMode) +function Base.getproperty(x::VkCopyMemoryToAccelerationStructureInfoKHR, f::Symbol) + r = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode) - ccall((:vkCmdSetLineRasterizationModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function Base.setproperty!(x::Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -function vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkLineRasterizationModeEXT), commandBuffer, lineRasterizationMode) +function Base.propertynames(x::VkCopyMemoryToAccelerationStructureInfoKHR, private::Bool = false) + (:sType, :pNext, :src, :dst, :mode, if private + fieldnames(typeof(x)) + else + () + end...) +end + +function VkCopyMemoryToAccelerationStructureInfoKHR(sType::VkStructureType, pNext::Ptr{Cvoid}, src::VkDeviceOrHostAddressConstKHR, dst::VkAccelerationStructureKHR, mode::VkCopyAccelerationStructureModeKHR) + ref = Ref{VkCopyMemoryToAccelerationStructureInfoKHR}() + ptr = Base.unsafe_convert(Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}, ref) + ptr.sType = sType + ptr.pNext = pNext + ptr.src = src + ptr.dst = dst + ptr.mode = mode + ref[] end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable) - ccall((:vkCmdSetLineStippleEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR end -function vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stippledLineEnable) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne) - ccall((:vkCmdSetDepthClipNegativeOneToOneEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR +const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR +const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR +const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR +const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR +const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, negativeOneToOne) +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable) - ccall((:vkCmdSetViewportWScalingEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, viewportWScalingEnable) +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles) - ccall((:vkCmdSetViewportSwizzleNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) + ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportSwizzleNV}), commandBuffer, firstViewport, viewportCount, pViewportSwizzles) +function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable) - ccall((:vkCmdSetCoverageToColorEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +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 vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageToColorEnable) +function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) end -function vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation) - ccall((:vkCmdSetCoverageToColorLocationNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +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 vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, coverageToColorLocation) +function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode) - ccall((:vkCmdSetCoverageModulationModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageModulationModeNV), commandBuffer, coverageModulationMode) +function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable) - ccall((:vkCmdSetCoverageModulationTableEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, coverageModulationTableEnable) +function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable) - ccall((:vkCmdSetCoverageModulationTableNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{Cfloat}), commandBuffer, coverageModulationTableCount, pCoverageModulationTable) +function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) end -function vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable) - ccall((:vkCmdSetShadingRateImageEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +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 vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, shadingRateImageEnable) +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) + ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable) - ccall((:vkCmdSetRepresentativeFragmentTestEnableNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, representativeFragmentTestEnable) +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode) - ccall((:vkCmdSetCoverageReductionModeNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -function vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkCoverageReductionModeNV), commandBuffer, coverageReductionMode) +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) end -@cenum VkSubpassMergeStatusEXT::UInt32 begin - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0 - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12 - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13 - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 2147483647 +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassMergeFeedback::VkBool32 +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) end -struct VkRenderPassCreationControlEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disallowMerging::VkBool32 +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -struct VkRenderPassCreationFeedbackInfoEXT - postMergeSubpassCount::UInt32 +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) + ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) end -struct VkRenderPassCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pRenderPassFeedback::Ptr{VkRenderPassCreationFeedbackInfoEXT} +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 VkRenderPassSubpassFeedbackInfoEXT - subpassMergeStatus::VkSubpassMergeStatusEXT - description::NTuple{256, Cchar} - postMergeIndex::UInt32 +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -struct VkRenderPassSubpassFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSubpassFeedback::Ptr{VkRenderPassSubpassFeedbackInfoEXT} +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -@cenum VkDirectDriverLoadingModeLUNARG::UInt32 begin - VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0 - VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1 - VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 2147483647 +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) + ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) end -const VkDirectDriverLoadingFlagsLUNARG = VkFlags +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 -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddrLUNARG ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddrLUNARG = Ptr{Cvoid} +function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) + ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) +end -struct VkDirectDriverLoadingInfoLUNARG - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDirectDriverLoadingFlagsLUNARG - pfnGetInstanceProcAddr::PFN_vkGetInstanceProcAddrLUNARG +@cenum VkShaderGroupShaderKHR::UInt32 begin + 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 end -struct VkDirectDriverLoadingListLUNARG +struct VkRayTracingShaderGroupCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - mode::VkDirectDriverLoadingModeLUNARG - driverCount::UInt32 - pDrivers::Ptr{VkDirectDriverLoadingInfoLUNARG} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} end -struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT +struct VkRayTracingPipelineInterfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderModuleIdentifier::VkBool32 + maxPipelineRayPayloadSize::UInt32 + maxPipelineRayHitAttributeSize::UInt32 end -struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT +struct VkRayTracingPipelineCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderModuleIdentifierAlgorithmUUID::NTuple{16, UInt8} + 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 -struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT +struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - pIdentifier::Ptr{UInt8} + rayTracingPipeline::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 + rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingPipelineTraceRaysIndirect::VkBool32 + rayTraversalPrimitiveCulling::VkBool32 end -struct VkShaderModuleIdentifierEXT +struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - identifierSize::UInt32 - identifier::NTuple{32, UInt8} + shaderGroupHandleSize::UInt32 + maxRayRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 + maxRayDispatchInvocationCount::UInt32 + shaderGroupHandleAlignment::UInt32 + maxRayHitAttributeSize::UInt32 end -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleIdentifierEXT ) ( VkDevice device , VkShaderModule shaderModule , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleIdentifierEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetShaderModuleCreateInfoIdentifierEXT ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , VkShaderModuleIdentifierEXT * pIdentifier ) -const PFN_vkGetShaderModuleCreateInfoIdentifierEXT = Ptr{Cvoid} - -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier) - ccall((:vkGetShaderModuleIdentifierEXT, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 end -function vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkShaderModuleIdentifierEXT}), device, shaderModule, pIdentifier) -end +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier) - ccall((:vkGetShaderModuleCreateInfoIdentifierEXT, libvulkan), Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} -function vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkShaderModuleIdentifierEXT}), device, pCreateInfo, pIdentifier) -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} -const VkOpticalFlowSessionNV_T = Cvoid +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} -const VkOpticalFlowSessionNV = Ptr{VkOpticalFlowSessionNV_T} +# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR +const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} -@cenum VkOpticalFlowPerformanceLevelNV::UInt32 begin - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3 - VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 2147483647 -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR +const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} -@cenum VkOpticalFlowSessionBindingPointNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8 - VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 2147483647 +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 -@cenum VkOpticalFlowGridSizeFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 1 - VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 2 - VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 4 - VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 8 - VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) end -const VkOpticalFlowGridSizeFlagsNV = VkFlags - -@cenum VkOpticalFlowUsageFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0 - VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 1 - VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 2 - VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 4 - VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 8 - VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 16 - VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowUsageFlagsNV = VkFlags +function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end -@cenum VkOpticalFlowSessionCreateFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 1 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 2 - VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 4 - VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 8 - VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 16 - VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowSessionCreateFlagsNV = VkFlags +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) + ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end -@cenum VkOpticalFlowExecuteFlagBitsNV::UInt32 begin - VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 1 - VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +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 -const VkOpticalFlowExecuteFlagsNV = VkFlags +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) +end -struct VkPhysicalDeviceOpticalFlowFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - opticalFlow::VkBool32 +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) + ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -struct VkPhysicalDeviceOpticalFlowPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedOutputGridSizes::VkOpticalFlowGridSizeFlagsNV - supportedHintGridSizes::VkOpticalFlowGridSizeFlagsNV - hintSupported::VkBool32 - costSupported::VkBool32 - bidirectionalFlowSupported::VkBool32 - globalFlowSupported::VkBool32 - minWidth::UInt32 - minHeight::UInt32 - maxWidth::UInt32 - maxHeight::UInt32 - maxNumRegionsOfInterest::UInt32 +function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) + ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) end -struct VkOpticalFlowImageFormatInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkOpticalFlowUsageFlagsNV +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) + ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -struct VkOpticalFlowImageFormatPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat +function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) end -struct VkOpticalFlowSessionCreateInfoNV +struct VkPhysicalDeviceRayQueryFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} - width::UInt32 - height::UInt32 - imageFormat::VkFormat - flowVectorFormat::VkFormat - costFormat::VkFormat - outputGridSize::VkOpticalFlowGridSizeFlagsNV - hintGridSize::VkOpticalFlowGridSizeFlagsNV - performanceLevel::VkOpticalFlowPerformanceLevelNV - flags::VkOpticalFlowSessionCreateFlagsNV + rayQuery::VkBool32 end -struct VkOpticalFlowSessionCreatePrivateDataInfoNV +struct VkPhysicalDeviceMeshShaderFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - id::UInt32 - size::UInt32 - pPrivateData::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 + multiviewMeshShader::VkBool32 + primitiveFragmentShadingRateMeshShader::VkBool32 + meshShaderQueries::VkBool32 end -struct VkOpticalFlowExecuteInfoNV +struct VkPhysicalDeviceMeshShaderPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkOpticalFlowExecuteFlagsNV - regionCount::UInt32 - pRegions::Ptr{VkRect2D} + maxTaskWorkGroupTotalCount::UInt32 + maxTaskWorkGroupCount::NTuple{3, UInt32} + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskPayloadSize::UInt32 + maxTaskSharedMemorySize::UInt32 + maxTaskPayloadAndSharedMemorySize::UInt32 + maxMeshWorkGroupTotalCount::UInt32 + maxMeshWorkGroupCount::NTuple{3, UInt32} + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshSharedMemorySize::UInt32 + maxMeshPayloadAndSharedMemorySize::UInt32 + maxMeshOutputMemorySize::UInt32 + maxMeshPayloadAndOutputMemorySize::UInt32 + maxMeshOutputComponents::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshOutputLayers::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 + maxPreferredTaskWorkGroupInvocations::UInt32 + maxPreferredMeshWorkGroupInvocations::UInt32 + prefersLocalInvocationVertexOutput::VkBool32 + prefersLocalInvocationPrimitiveOutput::VkBool32 + prefersCompactVertexOutput::VkBool32 + prefersCompactPrimitiveOutput::VkBool32 end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) ( VkPhysicalDevice physicalDevice , const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo , uint32_t * pFormatCount , VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = Ptr{Cvoid} +struct VkDrawMeshTasksIndirectCommandEXT + groupCountX::UInt32 + groupCountY::UInt32 + groupCountZ::UInt32 +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateOpticalFlowSessionNV ) ( VkDevice device , const VkOpticalFlowSessionCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkOpticalFlowSessionNV * pSession ) -const PFN_vkCreateOpticalFlowSessionNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT +const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkDestroyOpticalFlowSessionNV ) ( VkDevice device , VkOpticalFlowSessionNV session , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyOpticalFlowSessionNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT +const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkBindOpticalFlowSessionImageNV ) ( VkDevice device , VkOpticalFlowSessionNV session , VkOpticalFlowSessionBindingPointNV bindingPoint , VkImageView view , VkImageLayout layout ) -const PFN_vkBindOpticalFlowSessionImageNV = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT +const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdOpticalFlowExecuteNV ) ( VkCommandBuffer commandBuffer , VkOpticalFlowSessionNV session , const VkOpticalFlowExecuteInfoNV * pExecuteInfo ) -const PFN_vkCmdOpticalFlowExecuteNV = Ptr{Cvoid} +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceOpticalFlowImageFormatsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) end -function vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkOpticalFlowImageFormatInfoNV}, Ptr{UInt32}, Ptr{VkOpticalFlowImageFormatPropertiesNV}), physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties) +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession) - ccall((:vkCreateOpticalFlowSessionNV, libvulkan), VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) end -function vkCreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkOpticalFlowSessionCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkOpticalFlowSessionNV}), device, pCreateInfo, pAllocator, pSession) +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator) - ccall((:vkDestroyOpticalFlowSessionNV, libvulkan), Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) + ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -function vkDestroyOpticalFlowSessionNV(device, session, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkOpticalFlowSessionNV, Ptr{VkAllocationCallbacks}), device, session, pAllocator) +const VkWin32SurfaceCreateFlagsKHR = VkFlags + +struct VkWin32SurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWin32SurfaceCreateFlagsKHR + hinstance::HINSTANCE + hwnd::HWND end -function vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout) - ccall((:vkBindOpticalFlowSessionImageNV, libvulkan), VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR +const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR +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 vkBindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout, fptr) - ccall(fptr, VkResult, (VkDevice, VkOpticalFlowSessionNV, VkOpticalFlowSessionBindingPointNV, VkImageView, VkImageLayout), device, session, bindingPoint, view, layout) +function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) + ccall(fptr, VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo) - ccall((:vkCmdOpticalFlowExecuteNV, libvulkan), Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) + ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) end -function vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkOpticalFlowSessionNV, Ptr{VkOpticalFlowExecuteInfoNV}), commandBuffer, session, pExecuteInfo) +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, fptr) + ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) end -struct VkPhysicalDeviceLegacyDitheringFeaturesEXT +struct VkImportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - legacyDithering::VkBool32 + handleType::VkExternalMemoryHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT +struct VkExportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -struct VkPhysicalDeviceTilePropertiesFeaturesQCOM +struct VkMemoryWin32HandlePropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - tileProperties::VkBool32 + memoryTypeBits::UInt32 end -struct VkTilePropertiesQCOM +struct VkMemoryGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - tileSize::VkExtent3D - apronSize::VkExtent2D - origin::VkOffset2D + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits end -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFramebufferTilePropertiesQCOM ) ( VkDevice device , VkFramebuffer framebuffer , uint32_t * pPropertiesCount , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetFramebufferTilePropertiesQCOM = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR +const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDynamicRenderingTilePropertiesQCOM ) ( VkDevice device , const VkRenderingInfo * pRenderingInfo , VkTilePropertiesQCOM * pProperties ) -const PFN_vkGetDynamicRenderingTilePropertiesQCOM = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR +const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties) - ccall((:vkGetFramebufferTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -function vkGetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkFramebuffer, Ptr{UInt32}, Ptr{VkTilePropertiesQCOM}), device, framebuffer, pPropertiesCount, pProperties) +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties) - ccall((:vkGetDynamicRenderingTilePropertiesQCOM, libvulkan), VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) + ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) end -function vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkRenderingInfo}, Ptr{VkTilePropertiesQCOM}), device, pRenderingInfo, pProperties) +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, fptr) + ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) end -struct VkPhysicalDeviceAmigoProfilingFeaturesSEC +struct VkWin32KeyedMutexAcquireReleaseInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - amigoProfiling::VkBool32 + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeouts::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} end -struct VkAmigoProfilingSubmitInfoSEC +struct VkImportSemaphoreWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - firstDrawTimestamp::UInt64 - swapBufferTimestamp::UInt64 + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM +struct VkExportSemaphoreWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - multiviewPerViewViewports::VkBool32 -end - -@cenum VkRayTracingInvocationReorderModeNV::UInt32 begin - VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1 - VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 2147483647 + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV +struct VkD3D12FenceSubmitInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingInvocationReorderReorderingHint::VkRayTracingInvocationReorderModeNV + waitSemaphoreValuesCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValuesCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} end -struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV +struct VkSemaphoreGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - rayTracingInvocationReorder::VkBool32 + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits end -struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreBuiltins::VkBool32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR +const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} -struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreMask::UInt64 - shaderCoreCount::UInt32 - shaderWarpsPerCore::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR +const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} -struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineLibraryGroupHandles::VkBool32 +function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) + ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) end -@cenum VkBuildAccelerationStructureModeKHR::UInt32 begin - 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 +function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) end -@cenum VkAccelerationStructureCreateFlagBitsKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 - VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 8 - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 4 - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -const VkAccelerationStructureCreateFlagsKHR = VkFlags - -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -struct VkAccelerationStructureGeometryTrianglesDataKHR +struct VkImportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -struct VkAccelerationStructureGeometryAabbsDataKHR +struct VkExportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -struct VkAccelerationStructureGeometryInstancesDataKHR +struct VkFenceGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits end -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR +const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) +# 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 -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - fptr = getproperty(ptr, f) - GC.@preserve r unsafe_load(fptr) +function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) end -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -const __U_VkAccelerationStructureGeometryDataKHR = Union{VkAccelerationStructureGeometryTrianglesDataKHR, VkAccelerationStructureGeometryAabbsDataKHR, VkAccelerationStructureGeometryInstancesDataKHR} +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end -function VkAccelerationStructureGeometryDataKHR(val::__U_VkAccelerationStructureGeometryDataKHR) - ref = Ref{VkAccelerationStructureGeometryDataKHR}() - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, ref) - if val isa VkAccelerationStructureGeometryTrianglesDataKHR - ptr.triangles = val - elseif val isa VkAccelerationStructureGeometryAabbsDataKHR - ptr.aabbs = val - elseif val isa VkAccelerationStructureGeometryInstancesDataKHR - ptr.instances = val - end - ref[] +struct VkImportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagsNV + handle::HANDLE end -struct VkAccelerationStructureGeometryKHR +struct VkExportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD end -struct VkAccelerationStructureBuildGeometryInfoKHR +# 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 + +function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, fptr) + ccall(fptr, VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoNV 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 + 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 VkAccelerationStructureCreateInfoKHR +struct VkSurfaceFullScreenExclusiveInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress + fullScreenExclusive::VkFullScreenExclusiveEXT end -struct VkWriteDescriptorSetAccelerationStructureKHR +struct VkSurfaceCapabilitiesFullScreenExclusiveEXT sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} + fullScreenExclusiveSupported::VkBool32 end -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR +struct VkSurfaceFullScreenExclusiveWin32InfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 + hmonitor::HMONITOR end -struct VkPhysicalDeviceAccelerationStructurePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxPrimitiveCount::UInt64 - maxPerStageDescriptorAccelerationStructures::UInt32 - maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 - maxDescriptorSetAccelerationStructures::UInt32 - maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 - minAccelerationStructureScratchOffsetAlignment::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT +const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT +const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT +const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT +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 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR +function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) end -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain, fptr) + ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) end -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, fptr) + ccall(fptr, VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) +end -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireWinrtDisplayNV +const PFN_vkAcquireWinrtDisplayNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetWinrtDisplayNV +const PFN_vkGetWinrtDisplayNV = Ptr{Cvoid} -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructuresIndirectKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkDeviceAddress * pIndirectDeviceAddresses , const uint32_t * pIndirectStrides , const uint32_t * const * ppMaxPrimitiveCounts ) -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} +function vkAcquireWinrtDisplayNV(physicalDevice, display) + ccall((:vkAcquireWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructuresKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} +function vkAcquireWinrtDisplayNV(physicalDevice, display, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} +function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay) + ccall((:vkGetWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, fptr) + ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) +end -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +const VULKAN_H_ = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} +const VULKAN_CORE_H_ = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} +const VK_VERSION_1_0 = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} +const VK_USE_64_BIT_PTR_DEFINES = 1 -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} +# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} +const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) -# 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} +const VK_HEADER_VERSION = 321 -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionInfoKHR * pVersionInfo , VkAccelerationStructureCompatibilityKHR * pCompatibility ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureBuildSizesKHR ) ( VkDevice device , VkAccelerationStructureBuildTypeKHR buildType , const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo , const uint32_t * pMaxPrimitiveCounts , VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VK_FALSE = Cuint(0) -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end +const VK_LOD_CLAMP_NONE = Float32(1000.0) -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) -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 +const VK_TRUE = Cuint(1) -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end +const VK_WHOLE_SIZE = ~(Culonglong(0)) -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 +const VK_MAX_MEMORY_TYPES = Cuint(32) -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const VK_UUID_SIZE = Cuint(16) -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) + +const VK_MAX_DESCRIPTION_SIZE = Cuint(256) + +const VK_MAX_MEMORY_HEAPS = Cuint(16) + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) + +const VK_LUID_SIZE = Cuint(8) + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) + +const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) + +const VK_VERSION_1_3 = 1 + +const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) + +const VK_VERSION_1_4 = 1 + +const VK_API_VERSION_1_4 = VK_MAKE_API_VERSION(0, 1, 4, 0) + +const VK_MAX_GLOBAL_PRIORITY_SIZE = Cuint(16) + +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_video_queue = 1 + +const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 + +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 = 8 + +const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" + +const VK_KHR_video_encode_h264 = 1 + +const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 + +const vulkan_video_codec_h264std = 1 + +const VULKAN_VIDEO_CODECS_COMMON_H_ = 1 + +const vulkan_video_codecs_common = 1 + +const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 + +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end +const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 -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 +const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fptr) - ccall(fptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end +const STD_VIDEO_H264_NO_REFERENCE_PICTURE = 0xff -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const vulkan_video_codec_h264std_encode = 1 -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_encode" -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end +const VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION = 14 -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_KHR_video_encode_h264" -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fptr) - ccall(fptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end +const VK_KHR_video_encode_h265 = 1 -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 +const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end +const vulkan_video_codec_h265std = 1 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fptr) - ccall(fptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end +const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 -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 +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fptr) - ccall(fptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end +const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 -@cenum VkShaderGroupShaderKHR::UInt32 begin - 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 -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 -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 STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 -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 STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} +const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkDeferredOperationKHR deferredOperation , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} +const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable , const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable , VkDeviceAddress indirectDeviceAddress ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} +const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 -# typedef VkDeviceSize ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupStackSizeKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t group , VkShaderGroupShaderKHR groupShader ) -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} +const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 -# typedef void ( VKAPI_PTR * PFN_vkCmdSetRayTracingPipelineStackSizeKHR ) ( VkCommandBuffer commandBuffer , uint32_t pipelineStackSize ) -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 -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 +const STD_VIDEO_H265_MAX_DPB_SIZE = 16 -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end +const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 -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 +const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end +const STD_VIDEO_H265_MAX_DELTA_POC = 48 -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 +const STD_VIDEO_H265_NO_REFERENCE_PICTURE = 0xff -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fptr) - ccall(fptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end +const VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ = 1 -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 +const vulkan_video_codec_h265std_encode = 1 -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fptr) - ccall(fptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end +const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_encode" -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION = 14 -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end +const VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME = "VK_KHR_video_encode_h265" -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_KHR_video_decode_h264 = 1 -struct VkPhysicalDeviceMeshShaderFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 - multiviewMeshShader::VkBool32 - primitiveFragmentShadingRateMeshShader::VkBool32 - meshShaderQueries::VkBool32 -end +const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 -struct VkPhysicalDeviceMeshShaderPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTaskWorkGroupTotalCount::UInt32 - maxTaskWorkGroupCount::NTuple{3, UInt32} - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskPayloadSize::UInt32 - maxTaskSharedMemorySize::UInt32 - maxTaskPayloadAndSharedMemorySize::UInt32 - maxMeshWorkGroupTotalCount::UInt32 - maxMeshWorkGroupCount::NTuple{3, UInt32} - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshSharedMemorySize::UInt32 - maxMeshPayloadAndSharedMemorySize::UInt32 - maxMeshOutputMemorySize::UInt32 - maxMeshPayloadAndOutputMemorySize::UInt32 - maxMeshOutputComponents::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshOutputLayers::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 - maxPreferredTaskWorkGroupInvocations::UInt32 - maxPreferredMeshWorkGroupInvocations::UInt32 - prefersLocalInvocationVertexOutput::VkBool32 - prefersLocalInvocationPrimitiveOutput::VkBool32 - prefersCompactVertexOutput::VkBool32 - prefersCompactPrimitiveOutput::VkBool32 -end +const vulkan_video_codec_h264std_decode = 1 -struct VkDrawMeshTasksIndirectCommandEXT - groupCountX::UInt32 - groupCountY::UInt32 - groupCountZ::UInt32 -end +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksEXT ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDrawMeshTasksEXT = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectEXT = Ptr{Cvoid} +const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountEXT ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountEXT = Ptr{Cvoid} +const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDrawMeshTasksEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 9 -function vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end +const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_dynamic_rendering = 1 -function vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end +const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" -function vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end +const VK_KHR_multiview = 1 -const VkWin32SurfaceCreateFlagsKHR = VkFlags +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -struct VkWin32SurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWin32SurfaceCreateFlagsKHR - hinstance::HINSTANCE - hwnd::HWND -end +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR ) ( VkInstance instance , const VkWin32SurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} +const VK_KHR_get_physical_device_properties2 = 1 -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex ) -const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fptr) - ccall(fptr, VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end +const VK_KHR_device_group = 1 -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) - ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, fptr) - ccall(fptr, VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -struct VkImportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - handle::HANDLE - name::LPCWSTR -end +const VK_KHR_shader_draw_parameters = 1 -struct VkExportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{SECURITY_ATTRIBUTES} - dwAccess::DWORD - name::LPCWSTR -end +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -struct VkMemoryWin32HandlePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -struct VkMemoryGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end +const VK_KHR_maintenance1 = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR ) ( VkDevice device , const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) -const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} +const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , HANDLE handle , VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties ) -const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} +const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) - ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end +const VK_KHR_device_group_creation = 1 -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, fptr) - ccall(fptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end +const VK_KHR_DEVICE_GROUP_CREATION_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_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -struct VkImportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - handle::HANDLE - name::LPCWSTR -end +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -struct VkExportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{SECURITY_ATTRIBUTES} - dwAccess::DWORD - name::LPCWSTR -end +const VK_KHR_external_memory_capabilities = 1 -struct VkD3D12FenceSubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreValuesCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValuesCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -struct VkSemaphoreGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR ) ( VkDevice device , const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo ) -const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} +const VK_LUID_SIZE_KHR = VK_LUID_SIZE -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR ) ( VkDevice device , const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) -const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} +const VK_KHR_external_memory = 1 -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) - ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_external_memory_fd = 1 -struct VkImportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - handle::HANDLE - name::LPCWSTR -end +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -struct VkExportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{SECURITY_ATTRIBUTES} - dwAccess::DWORD - name::LPCWSTR -end +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -struct VkFenceGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VK_KHR_external_semaphore_capabilities = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR ) ( VkDevice device , const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo ) -const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR ) ( VkDevice device , const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) -const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) - ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end +const VK_KHR_external_semaphore = 1 -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) -end +const VK_KHR_external_semaphore_fd = 1 -struct VkImportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagsNV - handle::HANDLE -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -struct VkExportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{SECURITY_ATTRIBUTES} - dwAccess::DWORD -end +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV ) ( VkDevice device , VkDeviceMemory memory , VkExternalMemoryHandleTypeFlagsNV handleType , HANDLE * pHandle ) -const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} +const VK_KHR_push_descriptor = 1 -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) - ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) -end +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, fptr) - ccall(fptr, VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) -end +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" -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_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 -@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 +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -struct VkSurfaceFullScreenExclusiveInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusive::VkFullScreenExclusiveEXT -end +const VK_KHR_16bit_storage = 1 -struct VkSurfaceCapabilitiesFullScreenExclusiveEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusiveSupported::VkBool32 -end +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -struct VkSurfaceFullScreenExclusiveWin32InfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hmonitor::HMONITOR -end +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} +const VK_KHR_incremental_present = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT ) ( VkDevice device , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkDeviceGroupPresentModeFlagsKHR * pModes ) -const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} +const VK_KHR_descriptor_update_template = 1 -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VK_KHR_imageless_framebuffer = 1 -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain, fptr) - ccall(fptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end +const VK_KHR_create_renderpass2 = 1 -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, fptr) - ccall(fptr, VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireWinrtDisplayNV ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) -const PFN_vkAcquireWinrtDisplayNV = Ptr{Cvoid} +const VK_KHR_shared_presentable_image = 1 -# typedef VkResult ( VKAPI_PTR * PFN_vkGetWinrtDisplayNV ) ( VkPhysicalDevice physicalDevice , uint32_t deviceRelativeId , VkDisplayKHR * pDisplay ) -const PFN_vkGetWinrtDisplayNV = Ptr{Cvoid} +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -function vkAcquireWinrtDisplayNV(physicalDevice, display) - ccall((:vkAcquireWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -function vkAcquireWinrtDisplayNV(physicalDevice, display, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end +const VK_KHR_external_fence_capabilities = 1 -function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay) - ccall((:vkGetWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, fptr) - ccall(fptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VULKAN_H_ = 1 +const VK_KHR_external_fence = 1 -const VULKAN_CORE_H_ = 1 +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_VERSION_1_0 = 1 +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_USE_64_BIT_PTR_DEFINES = 1 +const VK_KHR_external_fence_fd = 1 -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0) +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_HEADER_VERSION = 240 +const VK_KHR_performance_query = 1 -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_FALSE = Cuint(0) +const VK_KHR_maintenance2 = 1 -const VK_LOD_CLAMP_NONE = Float32(1000.0) +const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) +const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION -const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME -const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) +const VK_KHR_get_surface_capabilities2 = 1 -const VK_TRUE = Cuint(1) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_WHOLE_SIZE = ~(Culonglong(0)) +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_MAX_MEMORY_TYPES = Cuint(32) +const VK_KHR_variable_pointers = 1 -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = Cuint(256) +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_UUID_SIZE = Cuint(16) +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_MAX_EXTENSION_NAME_SIZE = Cuint(256) +const VK_KHR_get_display_properties2 = 1 -const VK_MAX_DESCRIPTION_SIZE = Cuint(256) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_MAX_MEMORY_HEAPS = Cuint(16) +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_VERSION_1_1 = 1 +const VK_KHR_dedicated_allocation = 1 -const VK_API_VERSION_1_1 = VK_MAKE_API_VERSION(0, 1, 1, 0) +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_MAX_DEVICE_GROUP_SIZE = Cuint(32) +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_LUID_SIZE = Cuint(8) +const VK_KHR_storage_buffer_storage_class = 1 -const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(1)) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_VERSION_1_2 = 1 +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_API_VERSION_1_2 = VK_MAKE_API_VERSION(0, 1, 2, 0) +const VK_KHR_shader_bfloat16 = 1 -const VK_MAX_DRIVER_NAME_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE = Cuint(256) +const VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16" -const VK_VERSION_1_3 = 1 +const VK_KHR_relaxed_block_layout = 1 -const VK_API_VERSION_1_3 = VK_MAKE_API_VERSION(0, 1, 3, 0) +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_surface = 1 +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_SURFACE_SPEC_VERSION = 25 +const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_swapchain = 1 +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 +const VK_KHR_image_format_list = 1 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_display = 1 +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_DISPLAY_SPEC_VERSION = 23 +const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_display_swapchain = 1 +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 +const VK_KHR_bind_memory2 = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_sampler_mirror_clamp_to_edge = 1 +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 +const VK_KHR_maintenance3 = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" +const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 -const VK_KHR_video_queue = 1 +const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8 +const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME -const VK_KHR_video_decode_queue = 1 +const VK_KHR_draw_indirect_count = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7 +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_video_decode_h264 = 1 +const VK_KHR_shader_subgroup_extended_types = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const vulkan_video_codec_h264std = 1 +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const STD_VIDEO_H264_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_8bit_storage = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_shader_atomic_int64 = 1 -const STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const STD_VIDEO_H264_MAX_NUM_LIST_REF = 32 +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const STD_VIDEO_H264_MAX_CHROMA_PLANES = 2 +const VK_KHR_shader_clock = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const vulkan_video_codec_h264std_decode = 1 +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const VK_KHR_video_decode_h265 = 1 -const STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 +const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +const vulkan_video_codec_h265std_decode = 1 -const VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 -const VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264" +const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" -const VK_KHR_dynamic_rendering = 1 +const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 -const VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 8 -const VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering" +const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" -const VK_KHR_multiview = 1 +const VK_KHR_global_priority = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 +const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" +const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" -const VK_KHR_get_physical_device_properties2 = 1 +const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = VK_MAX_GLOBAL_PRIORITY_SIZE -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 +const VK_KHR_driver_properties = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_device_group = 1 +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_draw_parameters = 1 +const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_maintenance1 = 1 +const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_MAINTENANCE_1_SPEC_VERSION = 2 +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_maintenance1" +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_MAINTENANCE1_SPEC_VERSION = VK_KHR_MAINTENANCE_1_SPEC_VERSION +const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = VK_KHR_MAINTENANCE_1_EXTENSION_NAME +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_device_group_creation = 1 +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 +const VK_KHR_timeline_semaphore = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_external_memory_capabilities = 1 +const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE +const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_external_memory = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 +const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" +const VK_KHR_fragment_shading_rate = 1 -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL +const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 -const VK_KHR_external_memory_fd = 1 +const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 +const VK_KHR_dynamic_rendering_local_read = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_capabilities = 1 +const VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME = "VK_KHR_dynamic_rendering_local_read" -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_shader_quad_control = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" +const VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION = 1 -const VK_KHR_external_semaphore = 1 +const VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME = "VK_KHR_shader_quad_control" -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 +const VK_KHR_spirv_1_4 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_external_semaphore_fd = 1 +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 +const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_push_descriptor = 1 +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 +const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_shader_float16_int8 = 1 +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 +const VK_KHR_present_wait = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" +const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 -const VK_KHR_16bit_storage = 1 +const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_incremental_present = 1 +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 +const VK_KHR_buffer_device_address = 1 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_descriptor_update_template = 1 +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 +const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_imageless_framebuffer = 1 +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 +const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_create_renderpass2 = 1 +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 +const VK_KHR_map_memory2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" +const VK_KHR_MAP_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_shared_presentable_image = 1 +const VK_KHR_MAP_MEMORY_2_EXTENSION_NAME = "VK_KHR_map_memory2" -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 +const VK_KHR_shader_integer_dot_product = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 -const VK_KHR_external_fence_capabilities = 1 +const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_pipeline_library = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_external_fence = 1 +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 +const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_external_fence_fd = 1 +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 +const VK_KHR_present_id = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" +const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 -const VK_KHR_performance_query = 1 +const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 +const VK_KHR_video_encode_queue = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" +const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 12 -const VK_KHR_maintenance2 = 1 +const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_KHR_MAINTENANCE_2_SPEC_VERSION = 1 +const VK_KHR_synchronization2 = 1 -const VK_KHR_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_maintenance2" +const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = VK_KHR_MAINTENANCE_2_SPEC_VERSION +const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = VK_KHR_MAINTENANCE_2_EXTENSION_NAME +const VK_KHR_fragment_shader_barycentric = 1 -const VK_KHR_get_surface_capabilities2 = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 +const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" +const VK_KHR_shader_subgroup_uniform_control_flow = 1 -const VK_KHR_variable_pointers = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" +const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_get_display_properties2 = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 +const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" +const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_dedicated_allocation = 1 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 +const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" +const VK_KHR_copy_commands2 = 1 -const VK_KHR_storage_buffer_storage_class = 1 +const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" +const VK_KHR_format_feature_flags2 = 1 -const VK_KHR_relaxed_block_layout = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" +const VK_KHR_ray_tracing_maintenance1 = 1 -const VK_KHR_get_memory_requirements2 = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" +const VK_KHR_portability_enumeration = 1 -const VK_KHR_image_format_list = 1 +const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 +const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" +const VK_KHR_maintenance4 = 1 -const VK_KHR_sampler_ycbcr_conversion = 1 +const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 +const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" +const VK_KHR_shader_subgroup_rotate = 1 -const VK_KHR_bind_memory2 = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 +const VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate" -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" +const VK_KHR_shader_maximal_reconvergence = 1 -const VK_KHR_maintenance3 = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_3_SPEC_VERSION = 1 +const VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME = "VK_KHR_shader_maximal_reconvergence" -const VK_KHR_MAINTENANCE_3_EXTENSION_NAME = "VK_KHR_maintenance3" +const VK_KHR_maintenance5 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = VK_KHR_MAINTENANCE_3_SPEC_VERSION +const VK_KHR_MAINTENANCE_5_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = VK_KHR_MAINTENANCE_3_EXTENSION_NAME +const VK_KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5" -const VK_KHR_draw_indirect_count = 1 +const VK_KHR_present_id2 = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 +const VK_KHR_PRESENT_ID_2_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" +const VK_KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2" -const VK_KHR_shader_subgroup_extended_types = 1 +const VK_KHR_present_wait2 = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 +const VK_KHR_PRESENT_WAIT_2_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" +const VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2" -const VK_KHR_8bit_storage = 1 +const VK_KHR_ray_tracing_position_fetch = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 +const VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" +const VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME = "VK_KHR_ray_tracing_position_fetch" -const VK_KHR_shader_atomic_int64 = 1 +const VK_KHR_pipeline_binary = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 +const VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR = Cuint(32) -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" +const VK_KHR_PIPELINE_BINARY_SPEC_VERSION = 1 -const VK_KHR_shader_clock = 1 +const VK_KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 +const VK_KHR_surface_maintenance1 = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" +const VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_video_decode_h265 = 1 +const VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1" -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 +const VK_KHR_swapchain_maintenance1 = 1 -const vulkan_video_codec_h265std = 1 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1 -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 +const VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1" -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 +const VK_KHR_cooperative_matrix = 1 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS = 6 +const VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2 -const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS = 16 +const VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_KHR_cooperative_matrix" -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS = 6 +const VK_KHR_compute_shader_derivatives = 1 -const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS = 64 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS = 6 +const VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_KHR_compute_shader_derivatives" -const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS = 64 +const VK_KHR_video_decode_av1 = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS = 2 +const VULKAN_VIDEO_CODEC_AV1STD_H_ = 1 -const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS = 64 +const vulkan_video_codec_av1std = 1 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 +const STD_VIDEO_AV1_NUM_REF_FRAMES = 8 -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 +const STD_VIDEO_AV1_REFS_PER_FRAME = 7 -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 +const STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8 -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 +const STD_VIDEO_AV1_MAX_TILE_COLS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE = 6 +const STD_VIDEO_AV1_MAX_TILE_ROWS = 64 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE = 19 +const STD_VIDEO_AV1_MAX_SEGMENTS = 8 -const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE = 21 +const STD_VIDEO_AV1_SEG_LVL_MAX = 8 -const STD_VIDEO_H265_MAX_NUM_LIST_REF = 15 +const STD_VIDEO_AV1_PRIMARY_REF_NONE = 7 -const STD_VIDEO_H265_MAX_CHROMA_PLANES = 2 +const STD_VIDEO_AV1_SELECT_INTEGER_MV = 2 -const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS = 64 +const STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2 -const STD_VIDEO_H265_MAX_LONG_TERM_PICS = 16 +const STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2 -const STD_VIDEO_H265_MAX_DELTA_POC = 48 +const STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4 -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 +const STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2 -const vulkan_video_codec_h265std_decode = 1 +const STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) +const STD_VIDEO_AV1_MAX_NUM_PLANES = 3 -const STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 8 +const STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +const STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14 -const VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" +const STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 +const STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10 -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" +const STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24 -const VK_KHR_global_priority = 1 +const STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25 -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) +const VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ = 1 -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 +const vulkan_video_codec_av1std_decode = 1 -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_driver_properties = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode" -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" +const VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = Cuint(7) -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE +const VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1 -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE +const VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1" -const VK_KHR_shader_float_controls = 1 +const VK_KHR_video_encode_av1 = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 +const VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" +const vulkan_video_codec_av1std_encode = 1 -const VK_KHR_depth_stencil_resolve = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" +const VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_encode" -const VK_KHR_swapchain_mutable_format = 1 +const VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME = "VK_KHR_video_encode_av1" -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" +const VK_KHR_video_decode_vp9 = 1 -const VK_KHR_timeline_semaphore = 1 +const VULKAN_VIDEO_CODEC_VP9STD_H_ = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 +const vulkan_video_codec_vp9std = 1 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" +const STD_VIDEO_VP9_NUM_REF_FRAMES = 8 -const VK_KHR_vulkan_memory_model = 1 +const STD_VIDEO_VP9_REFS_PER_FRAME = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 +const STD_VIDEO_VP9_MAX_REF_FRAMES = 4 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" +const STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS = 2 -const VK_KHR_shader_terminate_invocation = 1 +const STD_VIDEO_VP9_MAX_SEGMENTS = 8 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 +const STD_VIDEO_VP9_SEG_LVL_MAX = 4 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" +const STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS = 7 -const VK_KHR_fragment_shading_rate = 1 +const STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB = 3 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 2 +const VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" +const vulkan_video_codec_vp9std_decode = 1 -const VK_KHR_spirv_1_4 = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" +const VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_vp9_decode" -const VK_KHR_surface_protected_capabilities = 1 +const VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = Cuint(3) -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 +const VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" +const VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME = "VK_KHR_video_decode_vp9" -const VK_KHR_separate_depth_stencil_layouts = 1 +const VK_KHR_video_maintenance1 = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 +const VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" +const VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_video_maintenance1" -const VK_KHR_present_wait = 1 +const VK_KHR_vertex_attribute_divisor = 1 -const VK_KHR_PRESENT_WAIT_SPEC_VERSION = 1 +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1 -const VK_KHR_PRESENT_WAIT_EXTENSION_NAME = "VK_KHR_present_wait" +const VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor" -const VK_KHR_uniform_buffer_standard_layout = 1 +const VK_KHR_load_store_op_none = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" +const VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_KHR_load_store_op_none" -const VK_KHR_buffer_device_address = 1 +const VK_KHR_unified_image_layouts = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" +const VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts" -const VK_KHR_deferred_host_operations = 1 +const VK_KHR_shader_float_controls2 = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 +const VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" +const VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME = "VK_KHR_shader_float_controls2" -const VK_KHR_pipeline_executable_properties = 1 +const VK_KHR_index_type_uint8 = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 +const VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" +const VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_KHR_index_type_uint8" -const VK_KHR_shader_integer_dot_product = 1 +const VK_KHR_line_rasterization = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1 +const VK_KHR_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME = "VK_KHR_shader_integer_dot_product" +const VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME = "VK_KHR_line_rasterization" -const VK_KHR_pipeline_library = 1 +const VK_KHR_calibrated_timestamps = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 +const VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" +const VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_KHR_calibrated_timestamps" -const VK_KHR_shader_non_semantic_info = 1 +const VK_KHR_shader_expect_assume = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 +const VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" +const VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME = "VK_KHR_shader_expect_assume" -const VK_KHR_present_id = 1 +const VK_KHR_maintenance6 = 1 -const VK_KHR_PRESENT_ID_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_6_SPEC_VERSION = 1 -const VK_KHR_PRESENT_ID_EXTENSION_NAME = "VK_KHR_present_id" +const VK_KHR_MAINTENANCE_6_EXTENSION_NAME = "VK_KHR_maintenance6" -const VK_KHR_synchronization2 = 1 +const VK_KHR_video_encode_intra_refresh = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" +const VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME = "VK_KHR_video_encode_intra_refresh" -const VK_KHR_fragment_shader_barycentric = 1 +const VK_KHR_video_encode_quantization_map = 1 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION = 2 -const VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" +const VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME = "VK_KHR_video_encode_quantization_map" -const VK_KHR_shader_subgroup_uniform_control_flow = 1 +const VK_KHR_shader_relaxed_extended_instruction = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION = 1 +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME = "VK_KHR_shader_subgroup_uniform_control_flow" +const VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME = "VK_KHR_shader_relaxed_extended_instruction" -const VK_KHR_zero_initialize_workgroup_memory = 1 +const VK_KHR_maintenance7 = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_7_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" +const VK_KHR_MAINTENANCE_7_EXTENSION_NAME = "VK_KHR_maintenance7" -const VK_KHR_workgroup_memory_explicit_layout = 1 +const VK_KHR_maintenance8 = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_8_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" +const VK_KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8" -const VK_KHR_copy_commands2 = 1 +const VK_KHR_maintenance9 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 +const VK_KHR_MAINTENANCE_9_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" +const VK_KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9" -const VK_KHR_format_feature_flags2 = 1 +const VK_KHR_video_maintenance2 = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 2 +const VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION = 1 -const VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME = "VK_KHR_format_feature_flags2" +const VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME = "VK_KHR_video_maintenance2" -const VK_KHR_ray_tracing_maintenance1 = 1 +const VK_KHR_depth_clamp_zero_one = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1 +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" +const VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one" -const VK_KHR_portability_enumeration = 1 +const VK_KHR_robustness2 = 1 -const VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1 +const VK_KHR_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration" +const VK_KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2" -const VK_KHR_maintenance4 = 1 +const VK_KHR_present_mode_fifo_latest_ready = 1 -const VK_KHR_MAINTENANCE_4_SPEC_VERSION = 2 +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE_4_EXTENSION_NAME = "VK_KHR_maintenance4" +const VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready" const VK_EXT_debug_report = 1 @@ -20920,13 +32841,13 @@ const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" const VK_NVX_binary_import = 1 -const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 1 +const VK_NVX_BINARY_IMPORT_SPEC_VERSION = 2 const VK_NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import" const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3 const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" @@ -20998,7 +32919,7 @@ 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_SPEC_VERSION = 3 const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" @@ -21104,7 +33025,7 @@ 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_SPEC_VERSION = 2 const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" @@ -21122,16 +33043,22 @@ 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_SPEC_VERSION = 5 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_SPEC_VERSION = 3 const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" +const VK_IMG_relaxed_line_rasterization = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME = "VK_IMG_relaxed_line_rasterization" + const VK_EXT_external_memory_dma_buf = 1 const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 @@ -21374,7 +33301,7 @@ const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprin const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" @@ -21498,7 +33425,7 @@ const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_us const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 5 +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 6 const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" @@ -21568,6 +33495,18 @@ 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_host_image_copy = 1 + +const VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1 + +const VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy" + +const VK_EXT_map_memory_placed = 1 + +const VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION = 1 + +const VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME = "VK_EXT_map_memory_placed" + const VK_EXT_shader_atomic_float2 = 1 const VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION = 1 @@ -21612,10 +33551,16 @@ const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignm const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 3 +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5 const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" +const VK_EXT_depth_bias_control = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME = "VK_EXT_depth_bias_control" + const VK_EXT_device_memory_report = 1 const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 @@ -21676,6 +33621,18 @@ 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_QCOM_tile_shading = 1 + +const VK_QCOM_TILE_SHADING_SPEC_VERSION = 1 + +const VK_QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading" + +const VK_NV_low_latency = 1 + +const VK_NV_LOW_LATENCY_SPEC_VERSION = 1 + +const VK_NV_LOW_LATENCY_EXTENSION_NAME = "VK_NV_low_latency" + const VK_EXT_descriptor_buffer = 1 const VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1 @@ -21720,7 +33677,7 @@ const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_ma const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 +const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 2 const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" @@ -21750,7 +33707,7 @@ const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" const VK_EXT_device_fault = 1 -const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 1 +const VK_EXT_DEVICE_FAULT_SPEC_VERSION = 2 const VK_EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" @@ -21802,9 +33759,15 @@ const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION = 1 const VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME = "VK_EXT_primitive_topology_list_restart" +const VK_EXT_present_mode_fifo_latest_ready = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1 + +const VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_EXT_present_mode_fifo_latest_ready" + const VK_HUAWEI_subpass_shading = 1 -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 +const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 3 const VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME = "VK_HUAWEI_subpass_shading" @@ -21826,6 +33789,12 @@ const VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties" +const VK_EXT_frame_boundary = 1 + +const VK_EXT_FRAME_BOUNDARY_SPEC_VERSION = 1 + +const VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary" + const VK_EXT_multisampled_render_to_single_sampled = 1 const VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION = 1 @@ -21856,7 +33825,7 @@ const VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1 const VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME = "VK_EXT_global_priority_query" -const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +const VK_MAX_GLOBAL_PRIORITY_SIZE_EXT = VK_MAX_GLOBAL_PRIORITY_SIZE const VK_EXT_image_view_min_lod = 1 @@ -21876,6 +33845,12 @@ const VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION = 1 const VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_2d_view_of_3d" +const VK_EXT_shader_tile_image = 1 + +const VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME = "VK_EXT_shader_tile_image" + const VK_EXT_opacity_micromap = 1 const VK_EXT_OPACITY_MICROMAP_SPEC_VERSION = 2 @@ -21890,7 +33865,7 @@ const VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME = "VK_EXT_load_store_op_none" const VK_HUAWEI_cluster_culling_shader = 1 -const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1 +const VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 3 const VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader" @@ -21906,6 +33881,26 @@ const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION = 1 const VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME = "VK_EXT_pageable_device_local_memory" +const VK_ARM_shader_core_properties = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1 + +const VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_ARM_shader_core_properties" + +const VK_ARM_scheduling_controls = 1 + +const VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1 + +const VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls" + +const VK_EXT_image_sliced_view_of_3d = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME = "VK_EXT_image_sliced_view_of_3d" + +const VK_REMAINING_3D_SLICES_EXT = ~(Cuint(0)) + const VK_VALVE_descriptor_set_host_mapping = 1 const VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1 @@ -21924,9 +33919,15 @@ const VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION = 1 const VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME = "VK_EXT_non_seamless_cube_map" +const VK_ARM_render_pass_striped = 1 + +const VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION = 1 + +const VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME = "VK_ARM_render_pass_striped" + const VK_QCOM_fragment_density_map_offset = 1 -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 +const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3 const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset" @@ -21942,6 +33943,18 @@ const VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 const VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" +const VK_NV_device_generated_commands_compute = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2 + +const VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" + +const VK_NV_ray_tracing_linear_swept_spheres = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres" + const VK_NV_linear_color_attachment = 1 const VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION = 1 @@ -21966,6 +33979,18 @@ const VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION = 1 const VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" +const VK_EXT_nested_command_buffer = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION = 1 + +const VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME = "VK_EXT_nested_command_buffer" + +const VK_EXT_external_memory_acquire_unmodified = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" + const VK_EXT_extended_dynamic_state3 = 1 const VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION = 2 @@ -21984,6 +34009,12 @@ const VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION = 1 const VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME = "VK_LUNARG_direct_driver_loading" +const VK_ARM_tensors = 1 + +const VK_ARM_TENSORS_SPEC_VERSION = 1 + +const VK_ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" + const VK_EXT_shader_module_identifier = 1 const VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = Cuint(32) @@ -22006,7 +34037,7 @@ const VK_NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" const VK_EXT_legacy_dithering = 1 -const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 1 +const VK_EXT_LEGACY_DITHERING_SPEC_VERSION = 2 const VK_EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" @@ -22016,6 +34047,18 @@ const VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1 const VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME = "VK_EXT_pipeline_protected_access" +const VK_AMD_anti_lag = 1 + +const VK_AMD_ANTI_LAG_SPEC_VERSION = 1 + +const VK_AMD_ANTI_LAG_EXTENSION_NAME = "VK_AMD_anti_lag" + +const VK_EXT_shader_object = 1 + +const VK_EXT_SHADER_OBJECT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" + const VK_QCOM_tile_properties = 1 const VK_QCOM_TILE_PROPERTIES_SPEC_VERSION = 1 @@ -22040,12 +34083,36 @@ const VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1 const VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder" +const VK_NV_cooperative_vector = 1 + +const VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4 + +const VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector" + +const VK_NV_extended_sparse_address_space = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION = 1 + +const VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME = "VK_NV_extended_sparse_address_space" + const VK_EXT_mutable_descriptor_type = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 const VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_EXT_mutable_descriptor_type" +const VK_EXT_legacy_vertex_attributes = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME = "VK_EXT_legacy_vertex_attributes" + +const VK_EXT_layer_settings = 1 + +const VK_EXT_LAYER_SETTINGS_SPEC_VERSION = 2 + +const VK_EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" + const VK_ARM_shader_core_builtins = 1 const VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION = 2 @@ -22058,6 +34125,226 @@ const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1 const VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles" +const VK_EXT_dynamic_rendering_unused_attachments = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION = 1 + +const VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME = "VK_EXT_dynamic_rendering_unused_attachments" + +const VK_NV_low_latency2 = 1 + +const VK_NV_LOW_LATENCY_2_SPEC_VERSION = 2 + +const VK_NV_LOW_LATENCY_2_EXTENSION_NAME = "VK_NV_low_latency2" + +const VK_ARM_data_graph = 1 + +const VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = Cuint(128) + +const VK_ARM_DATA_GRAPH_SPEC_VERSION = 1 + +const VK_ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" + +const VK_QCOM_multiview_per_view_render_areas = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1 + +const VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" + +const VK_NV_per_stage_descriptor_set = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION = 1 + +const VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME = "VK_NV_per_stage_descriptor_set" + +const VK_QCOM_image_processing2 = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION = 1 + +const VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME = "VK_QCOM_image_processing2" + +const VK_QCOM_filter_cubic_weights = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME = "VK_QCOM_filter_cubic_weights" + +const VK_QCOM_ycbcr_degamma = 1 + +const VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION = 1 + +const VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME = "VK_QCOM_ycbcr_degamma" + +const VK_QCOM_filter_cubic_clamp = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1 + +const VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp" + +const VK_EXT_attachment_feedback_loop_dynamic_state = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_attachment_feedback_loop_dynamic_state" + +const VK_MSFT_layered_driver = 1 + +const VK_MSFT_LAYERED_DRIVER_SPEC_VERSION = 1 + +const VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME = "VK_MSFT_layered_driver" + +const VK_NV_descriptor_pool_overallocation = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME = "VK_NV_descriptor_pool_overallocation" + +const VK_QCOM_tile_memory_heap = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1 + +const VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap" + +const VK_NV_display_stereo = 1 + +const VK_NV_DISPLAY_STEREO_SPEC_VERSION = 1 + +const VK_NV_DISPLAY_STEREO_EXTENSION_NAME = "VK_NV_display_stereo" + +const VK_NV_raw_access_chains = 1 + +const VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1 + +const VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains" + +const VK_NV_external_compute_queue = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue" + +const VK_NV_command_buffer_inheritance = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1 + +const VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" + +const VK_NV_shader_atomic_float16_vector = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1 + +const VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector" + +const VK_EXT_shader_replicated_composites = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION = 1 + +const VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME = "VK_EXT_shader_replicated_composites" + +const VK_EXT_shader_float8 = 1 + +const VK_EXT_SHADER_FLOAT8_SPEC_VERSION = 1 + +const VK_EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8" + +const VK_NV_ray_tracing_validation = 1 + +const VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1 + +const VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation" + +const VK_NV_cluster_acceleration_structure = 1 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION = 3 + +const VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_cluster_acceleration_structure" + +const VK_NV_partitioned_acceleration_structure = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION = 1 + +const VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_NV_partitioned_acceleration_structure" + +const VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = ~(Cuint(0)) + +const VK_EXT_device_generated_commands = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1 + +const VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" + +const VK_MESA_image_alignment_control = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION = 1 + +const VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME = "VK_MESA_image_alignment_control" + +const VK_EXT_depth_clamp_control = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME = "VK_EXT_depth_clamp_control" + +const VK_HUAWEI_hdr_vivid = 1 + +const VK_HUAWEI_HDR_VIVID_SPEC_VERSION = 1 + +const VK_HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid" + +const VK_NV_cooperative_matrix2 = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" + +const VK_ARM_pipeline_opacity_micromap = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1 + +const VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap" + +const VK_EXT_vertex_attribute_robustness = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness" + +const VK_ARM_format_pack = 1 + +const VK_ARM_FORMAT_PACK_SPEC_VERSION = 1 + +const VK_ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack" + +const VK_VALVE_fragment_density_map_layered = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1 + +const VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered" + +const VK_NV_present_metering = 1 + +const VK_NV_PRESENT_METERING_SPEC_VERSION = 1 + +const VK_NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering" + +const VK_EXT_fragment_density_map_offset = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset" + +const VK_EXT_zero_initialize_device_memory = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1 + +const VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" + +const VK_SEC_pipeline_cache_incremental_mode = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1 + +const VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode" + const VK_KHR_acceleration_structure = 1 const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13